我试图证明MassTransit以与rabbitmq接收它们相同的顺序(FIFO)传递消息。到目前为止,我没有运气。 MT似乎随机地将消息传递出队列。我尝试将这两种总线配置选项设置为1:
SetConcurrentReceiverLimit() SetConcurrentConsumerLimit()
......似乎没什么区别。
如何通过MassTransit确保FIFO传送?
答案 0 :(得分:1)
还需要使用RabbitMQ设置预取。 MassTransit capping message rates at 10显示了在队列URI上使用预取配置的示例。
答案 1 :(得分:1)
如果将ConcurrentConsumerLimit设置为1(默认情况下接收器限制为1),并在URI上设置prefetch = 1,则应按顺序进行FIFO传送,假设不会抛出任何消费者异常。老实说,即使预取> 1(这对于性能原因很重要)它应该是有序的。
此外,如果您使用一些示例代码执行此操作,请发布示例代码并确保您的生产者和使用者进程正在侦听单独的队列。
x.ReceiveFrom(uri) // uri should be unique per bus instance