[rabbitmq-discuss] RabbitMQ not responding / not sending any errors to client

Vlad Alexandru Ionescu vlad at rabbitmq.com
Wed Sep 15 13:29:09 BST 2010


Actually RabbitMQ 2.0.0 doesn't use channel.flow any more. It uses TCP 
back-pressure instead.

Also, since it is using the persister, RabbitMQ will not be limited by 
the amount of memory; it is only bounded by disk space.

So there is no failure to be detect there.


Rgds,
Vlad.



On 09/15/2010 01:03 PM, Vlad Alexandru Ionescu wrote:
>
> Hi,
>
>
> If the broker is overwhelmed by a producer, it sends a channel.flow 
> command to the client, telling it to stop sending content. Our clients 
> respond automatically to that message and block further publishes from 
> the user application until the broker says it's ok to do so.
>
> If you want to detect when that happens in your program, you need to 
> use Channel.setFlowListener to listen to channel.flow events.
>
> Conversely, if you are consuming from the broker and the amount of 
> messages overwhelm your application, you can use Channel.flow(false) 
> to pause the broker from sending and then Channel.flow(true) to resume.
>
>
> Rgds,
> Vlad.
>
>
>
>
> On 09/13/2010 03:32 PM, diez wrote:
>> Hi,
>>
>> we are evaluating Rabbit as a solution for huge high performance and
>> high load environment.
>> During our tests we found encountered some problems with the clients we
>> used.
>>
>> Our Environment consists of the following:
>>
>> RabbitMQ using the new persister (version 2.0.0)
>> Debian Linux Lenny 5.0 (without any special tweaks)
>> Consumer and Producer written in Java with the spring-source generic
>> library (2.0.0) taken from rabbitmq website.
>>
>> Our primary concern:
>>
>> When the RabbitMQ Server runs into the vm_memory_high_watermark (or any
>> other load related issue) it does NOT communicate this to the clients.
>> We are not able to detect this failure on the client side. Obviously
>> there is a mechanism included in the Java client that seems to be the
>> right place to implement code to deal with this situation.
>>
>>
>>          channel.setReturnListener(new ReturnListener() {
>>
>>                  @Override
>>                  public void handleBasicReturn(int arg0, String arg1,
>> String arg2,
>>                          String arg3, BasicProperties arg4, byte[] arg5)
>> throws IOException {
>>
>>                      System.out.println("Error: " + arg1);
>>                  }
>>              });
>>
>>
>> If we run into the situation descibed above the ReturnListener isn't
>> invoked at all. Please note: The Server  (better the OTP Environment) is
>> configured not to consume all the systems memory, we decreased the
>> vm_memory_high_watermark to a realtively low level of some megs. So the
>> underlying operation system should not be the problem.
>>
>> Is it necessary to configure the server in a special way to make this
>> work or are we missing anything else?
>>
>> Sincerely your's
>>
>> Dieter Schmidt
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> rabbitmq-discuss mailing list
>> rabbitmq-discuss at lists.rabbitmq.com
>> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss


More information about the rabbitmq-discuss mailing list