Having recently moved one of our (http://15below.com) infrastructure services from using MSMQs to RabbitMq (via using EasyNetQ: https://github.com/mikehadlow/EasyNetQ), I then wanted to run it through some simple stress tests. One of the reasons for this is that the old service used to time out on messages regularly, leaving them in a dead letter queue and requiring us to write the 'DeadLetterProcessor' (a complete service in it's own right) to deal with the time outs.
74 lines of F# later, I was hitting the service with 40,000 requests spread across 4 parallel processes.
And the results: 18 seconds to process the lot, with no time outs or losses. Requests were going in faster than the service could process them, but Rabbit was admirably handling that side of things, and with the new setup multiple copies of the service would automatically round robin requests if that was ever needed.
Adious, DeadLetterProcessor: it was nice deleting you…