[rabbitmq-discuss] Intermittent Problem - 2.8.5 java client hangs on declare exchange

Matthias Radestock matthias at rabbitmq.com
Fri Aug 24 22:08:44 BST 2012


Matthew,

On 24/08/12 21:49, m.luchak at smartasking.com wrote:
> While the client wait() is well, waiting, the device receives incoming
> messages - so there is a connection and the heartbeat is running
> normally and happily.

The latter is on a different connection though, right? i.e. you are not 
receiving messages on the same connection that has a stuck 
exchange.declare, are you? That would be odder still.

> BTW, In the Javadocs there is an Exchange.Declare with a nowait boolean :
>
> AMQImpl.Exchange.Declare(int ticket, java.lang.String exchange,
> java.lang.String type, boolean passive, boolean durable, boolean
> autoDelete, boolean internal, boolean nowait,
> java.util.Map<java.lang.String,java.lang.Object> arguments)
>
> However, this option is not available in the 2.8.1 or 2.8.6 .jar files
> or source files... can anyone tell me if this overide is in a  nightly
> build and/or if it's irrelevant to the task at hand?

Most synchronous AMQP commands have an async variant, triggered by 
setting the nowait flag. We don't expose convenience methods for that in 
the API but you can use Channel.asyncRpc(Method method) to send commands 
like that, e.g.

import com.rabbitmq.client.impl.AMQImpl.Exchange;

         channel.asyncRpc(new Exchange.Declare.Builder()
                          .exchange("myexchange")
                          .type("direct")
                          .nowait(true)
                          .build());

Matthias.


More information about the rabbitmq-discuss mailing list