2016-05-15 6 views
1

Ich habe eine Frage, ist es möglich, Filter zu erstellen, um eine Nachricht zu vermeiden? Zum Beispiel ist die Nachricht:Maststransit-Filter empfangene Nachricht während konsumieren

public class ProcessingTask : IProcessingTask 
{ 
    public int Id { set; get; } 
    public string ExternalId { set; get; } 
    public ProcessingTaskStatus Status { set; get; } 
    public string Details { set; get; } 
} 

Also muss ich Nachricht an den Verbraucher weitergeben, wenn Nachricht StatusProcessingTaskStatus.Received zum Beispiel ist. Auf eine andere Weise muss die Nachricht zurückgewiesen werden.

Antwort

3

So können Sie die Contentfilter verwenden, um Nachrichten zu filtern, bevor sie den Verbraucher erreichen:

configurator.Consumer(() => _consumer, x => 
    { 
     x.ConfigureMessage<IProcessingTask>(v => v.UseContentFilter(async context => context.Message.Status == ProcessingTaskStatus.Received)); 
    }); 

Sie Setup haben einen Filter für jeden Nachrichtentyp, sie individuell konfiguriert.

+1

Hat MassTransit 3 noch die UseContentFilter-Methode? Ich kann es nicht finden. Oder wie kann ich keine Nachrichten erhalten, die von derselben Anwendung veröffentlicht wurden? Ich versuche, Daten zwischen mehreren Anwendungen zu synchronisieren, und ich möchte nicht, dass die Anwendung, die die Nachricht veröffentlicht hat, diese auch verwendet. –

Verwandte Themen