MassTransit、RabbitMQ - FIFO 出队支持

MassTransit, RabbitMQ - FIFO dequeue support

我试图证明 MassTransit 以与 rabbitmq 接收消息相同的顺序 (FIFO) 传送消息。到目前为止,我没有运气。 MT 似乎随机地从队列中传递消息。我尝试将这两个总线配置选项设置为 1:

SetConcurrentReceiverLimit() SetConcurrentConsumerLimit()

...好像没什么区别

如何确保通过 MassTransit 进行 FIFO 交付?

您还需要使用 RabbitMQ 设置预取。 MassTransit capping message rates at 10 显示了在队列 URI 上使用预取配置的示例。

如果您将 ConcurrentConsumerLimit 设置为 1(接收方限制默认为 1),并在 URI 上设置 prefetch=1,它应该按顺序进行 FIFO 交付(假设没有)抛出消费者异常。老实说,即使预取 > 1(出于性能原因这很重要),它也应该是有序的。

此外,如果您使用一些示例代码执行此操作,post 示例代码并确保您的生产者和消费者进程正在侦听不同的队列。

x.ReceiveFrom(uri) // uri should be unique per bus instance