masstransit过滤器在消费时收到消息

时间:2016-05-15 18:42:10

标签: c# rabbitmq 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,我需要将消息传递给使用者。另一方面,消息需要被拒绝。

1 个答案:

答案 0 :(得分:4)

因此,您可以使用ContentFilter在消息到达消费者之前过滤掉消息:

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

您必须为每种消息类型设置过滤器,它们是单独配置的。