[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