2016-05-15 73 views
1

我有一個問題,是否有可能創建過濾器來防止消費一條消息? 例如消息是:masstransit過濾收到消息,同時消耗

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

所以我需要傳遞信息給消費者,如果消息StatusProcessingTaskStatus.Received例如。另一方面,該消息需要被拒絕。

回答

3

所以,你可以使用ContentFilter過濾掉郵件到達消費者面前:

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

你必須設定每個消息類型的過濾器,它們單獨配置。

+1

MassTransit 3是否仍有UseContentFilter方法?我找不到它。或者我怎麼能不接收從同一個應用程序發佈的消息?我試圖在多個應用程序之間同步數據,並且我不希望發佈消息的應用程序也使用它。 –