[rabbitmq-discuss] Sequential processing for groups of messages with a multi-consumer setup
Ed Levin
ed at cloudservicesdepot.com
Tue Jun 26 03:30:34 BST 2012
Hi,
I am considering RabbitMQ for a project with the following requirement and
wanted to get some feedback since I am relatively new to message queuing:
To start, I have a queue with a number of consumers assigned for concurrent
processing. The messages published to a queue will represent tickets coming
from a ticketing system and some may be associated with the same ticket
(e.g. same ticket number on different messages in the queue). The problem
is that I can only consume (work on) a single message belonging to a given
ticket at a time to avoid external concurrency issues. In other words, if
consumer A is working on a message representing ticket 1 and, at the same
time, consumer B is available and is assigned the next message from the
queue that also represents ticket 1, we have a problem.
So far I am considering two possible options:
1. Dynamically create a temp queue per new unique ticket that arrives, and
in effect sort messages into their own queues by ticket number. The problem
with this (if even possible) is how to manage consumers for the temp
queues. If I assign a single consumer to each queue, the system does not
scale, if I assign a consumer to multiple queues I am back to the original
problem.
2.Keep a single queue with multiple consumers assigned and implement a
cache to track ticket numbers currently being processed. When a consumer
receives a new message, it first checks the cache to see if a given ticket
is already being processed. If so, re-queue the message, otherwise add to
cache.
I am leaning towards option 2 but appreciate any feedback and wisdom from
the community (perhaps I am missing something obvious).
Thank you,
-Ed
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20120625/60d04659/attachment.htm>
More information about the rabbitmq-discuss
mailing list