c# - 公共(public)交通过滤器在消费时收到消息

标签 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,我需要将消息传递给消费者。换句话说,消息需要被拒绝。

最佳答案

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

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

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

关于c# - 公共(public)交通过滤器在消费时收到消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37242253/

相关文章:

c# - Box 和 Unbox 是什么意思?

c# - 序列化具有非原始数据成员的对象

rabbitmq 客户端在尝试声明队列时挂起

wcf - 通过 WCF 使用高可用性 RabbitMQ 服务器对

docker - pika.exceptions.ConnectionClosed:与172.18.0.3:5672的连接失败:[Errno 111]连接被拒绝

c# - 加载巨大的 DBpedia 转储时出现内存不足异常

c# - 如何将 MassTransit 演示分离为生产者和消费者应用程序

c# - 处理排队的命令处理程序响应。 CQRS

c# - nServiceBus、Rhino 服务总线、MassTransit - 视频、演示、学习资源

c# - WPF Datagrid Double Click Cell MVVM设计