masstransit在消耗时过滤接收到的消息

Ale*_* Ku 1 c# masstransit rabbitmq

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

public class ProcessingTask : IProcessingTask
{
    public int Id { set; get; }
    public string ExternalId { set; get; }
    public ProcessingTaskStatus Status { set; get; }
    public string Details { set; get; }
}
Run Code Online (Sandbox Code Playgroud)

所以我需要传递信息给消费者,如果消息Status是ProcessingTaskStatus.Received例如。换句话说,该消息需要被拒绝。

Chr*_*son 5

因此,您可以使用ContentFilter在邮件到达使用者之前过滤掉它们:

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

您必须为每种消息类型分别设置一个过滤器。

  • MassTransit 3 是否还有 UseContentFilter 方法?我找不到。或者我怎么不能收到从同一个应用程序发布的消息?我正在尝试在多个应用程序之间同步数据,并且我不希望发布消息的应用程序也使用它。 (3认同)