公共交通过滤器在消费时收到消息

masstransit filter received message while consume

我有一个问题,是否可以创建过滤器来防止消费消息? 例如消息是:

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,我需要将消息传递给消费者。在另一种情况下,消息需要被拒绝。

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

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

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