2016-05-15 71 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方法?我找不到它。或者我怎么能不接收从同一个应用程序发布的消息?我试图在多个应用程序之间同步数据,并且我不希望发布消息的应用程序也使用它。 –