user514005
user514005

Reputation:

MassTransit, RabbitMQ - FIFO dequeue support

I am attempting to prove that MassTransit delivers messages in the same order (FIFO) that rabbitmq receives them. So far, I am not having luck. MT seems to randomly deliver messages out of a queue. I have tried setting both of these bus configuration options to 1:

SetConcurrentReceiverLimit() SetConcurrentConsumerLimit()

...seems to make no difference.

How do I ensure FIFO delivery via MassTransit?

Upvotes: 2

Views: 1666

Answers (2)

Chris Patterson
Chris Patterson

Reputation: 33308

If you set the ConcurrentConsumerLimit to 1 (receiver limit is 1 by default), and set the prefetch=1 on the URI, it should be in order FIFO delivery assuming no consumer exceptions are thrown. Honestly, even with a prefetch > 1 (which is important for performance reasons) it should be in-order.

Also, if you're doing this with some sample code, post the sample code and make sure that your producer and consumer processes are listening to separate queues.

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

Upvotes: 2

Travis
Travis

Reputation: 10547

There's also a prefetch you need to set with RabbitMQ. MassTransit capping message rates at 10 shows an example of using prefetch configuration on the queue URI.

Upvotes: 1

Related Questions