首页 文章

EasyNetQ - 交货的消息顺序

提问于
浏览
1

RabbitMQ - Message order of delivery

AMQP 0-9-1核心规范的第4.7节解释了保证订购的条件:在一个信道中发布的消息,通过一个交换机,一个队列和一个输出信道将按照它们发送的相同顺序接收 . 自2.7.0发布以来,RabbitMQ提供更强大的保障 .

这与EasyNetQ有关吗?我原以为它会持有,但我有时(但并不总是)看到不同的行为 .

如果消费者是同步的(不是我的情况;我有锁定但它在“if”之后开始,在这种情况下总是假的),我应该相信消息按照它们发布的顺序被消费吗? (相同类型的消息,相同的来源,去往同一目的地)或者EasyNetQ内部是否有其他元素在播放,我应该知道哪些元素不保留传递的消息顺序?

1 回答

  • 3

    EasyNetQ为每个IBus实例实现一个消费者线程,因此如果您使用标准的非异步订阅方法,您的消息处理程序将以与RabbitMQ传递消息相同的顺序同步触发 . 不应该需要实现锁定 . 如果使用async subscribe,仍然会按顺序调用处理程序,但当然它们可能会无序响应,具体取决于您实现异步处理程序的方式 .

相关问题