[rabbitmq-discuss] Queue inspector.

Brian Granger ellisonbg.net at gmail.com
Wed Nov 7 23:58:57 GMT 2007


> Can you clarify what it is about your system that requires the
> workflow to be producer driven and consumer driven? Are the
> interactions stateful in any way? Or am I missing the point?

We have different types of queues and there needs to be somewhat
complex logic that moves (consumes) messages from certain shared
queues into (publish) other private ones.  In pseudo code it looks
something like:

if private_queue = move_message():
    msg = shared_queue.consume()
    private_queue.publish(msg)

The important point is that the result of move_message() is very
dynamic.  That is, it depends on things like 1) the number of private
queues 2) the number of messages in those queues currently 3) the
particular resources and characteristics of the consumers of the
private queues (how much RAM they have, available libraries, etc.)

Now you may wonder why we would want this.  We have two types of
messages: 1) messages that need to be sent to a particular client and
2) messages that can be sent to any one client.  In this second case,
we typically want to send the message to the least loaded client.  Our
messages are packets of work that the clients (they are workers)
perform.  We use the shared queue to perform dynamical load balancing
for work that can be performed by any qualified worker.  But that work
still has to go through the private queues to preserve ordering.

Does this make a bit more sense?

Thanks

Brian

> Ben
>
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>




More information about the rabbitmq-discuss mailing list