RabbitMq .net核心客户端可以并行处理多个消息(不是一一对应)

时间:2019-08-12 15:46:20

标签: .net-core rabbitmq

假设我有一位发布商和2位消费者。 每个使用者一次(并行)应消耗5条消息。

(一次交换,绑定到一个队列,直接模式)

  • 发布者生成消息(1,2,3,... 14,15)
  • 消费者A消费(1,3,5,7,9)
  • 消费者B消费(2,4,6,8,10)
  • 消费者A完成处理消息1并接收消息11
  • ...等等

如何实现这种行为? 我意识到,Consumer.Receive事件仅在处理上一条消息时才触发。

在阅读rabbitmq文档时,这似乎正是我所需要的: https://www.rabbitmq.com/consumer-prefetch.html

但是很明显,设置对上述行为没有影响(消息仍按顺序处理)。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  

设置预取,消息仍按顺序处理

因为per-channel messages are be processed serially。因此,您有两种选择:

  1. 在单个通道上使用,并生成多个任务线程来处理消息。
  2. 打开多个使用者通道,并在该通道线程中处理消息。