[rabbitmq-discuss] Controlling over-producers
Edwin Fine
rabbitmq-discuss_efine at usa.net
Wed May 7 16:14:48 BST 2008
Hi all
I have looked at the FAQs, and the mailing list about this topic. This
is what I know so far:
1. I have an Erlang consumer (using the RabbitMQ Erlang client) that
has registered using a basic.consume.
2. The consumer often gets flooded with messages from the producer
when it does some time-based operations. In Erlang, this means that
the consumer's Erlang message queue grows to a couple hundred
messages, which is not what I want. I want the producer to stop
sending messages when the consumer is too busy.
Messages must not be lost and are marked persistent, so I want them to
stay on disk until the consumer acknowledges successful processing. Am
I correct to assume RabbitMQ does this if I have marked the queue as
persistent and have not replied to the basic.deliver with an ack?
3. The channel.flow object is not currently implemented in RabbitMQ; I
think this would be perfect to do this.
4. IIRC, a suggestion was for the consumer to basic.cancel itself
until the load reduces, and then re-subscribe (basic.consume) once the
overflow condition has abated. This seems heavy-handed, and possibly
resource-intensive, especially since it might happen relatively
frequently.
I'd appreciate any suggestions or clarifications.
Regards,
Edwin Fine
Fine Computer Consultants
More information about the rabbitmq-discuss
mailing list