Dear Rabbitters,<div><br></div><div>We&#39;ve got a situation -- it must be quite common -- where, in the simplest case, we have two application nodes, call them A and B. RabbitMQ server is running on the machines for both A and B. The B node has established it&#39;s connection to exchange and queue, but does not know whether A has. In the case that A has, all is well in the world. When B sends a message to A over RabbitMQ, A happily processes it and returns a response message. However, if A has not established it&#39;s connection to exchange and queue, then if B has sent a message to A on this exchange and queue, then when A establishes it&#39;s connection -- not only does it not see the pending message, the next message B sends causes a Java exception to be thrown (see below). Now, we can arrange a bit of a handshake to work around this, and have done so. However, we&#39;d like to know if there&#39;s a better or Rabbitier way of doing this.</div>

<div><br></div><div>Best wishes,</div><div><br></div><div>--greg</div><div><br></div><div><meta charset="utf-8"><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; "><pre style="font-size: 12px; white-space: pre-wrap; max-width: 80em; padding-left: 0.7em; ">
com.rabbitmq.client.AlreadyClosedException: clean connection shutdown; reason: Attempt to use closed channelscala&gt;
        at com.rabbitmq.client.impl.AMQChannel.ensureIsOpen(AMQChannel.java:181)
        at com.rabbitmq.client.impl.AMQChannel.transmit(AMQChannel.java:276)
        at com.rabbitmq.client.impl.ChannelN.basicPublish(ChannelN.java:521)
        at com.rabbitmq.client.impl.ChannelN.basicPublish(ChannelN.java:507)
        at net.liftweb.amqp.AMQPSender.send(AMQPSender.scala:25)
        at net.liftweb.amqp.AMQPSender$$anonfun$loop$1.apply(AMQPSender.scala:32)
        at net.liftweb.amqp.AMQPSender$$anonfun$loop$1.apply(AMQPSender.scala:31)
        at scala.actors.ReactorTask.run(ReactorTask.scala:31)
        at scala.actors.Reactor$class.resumeReceiver(Reactor.scala:129)
        at net.liftweb.amqp.AMQPSender.scala$actors$ReplyReactor$$super$resumeReceiver(AMQPSender.scala:15)
        at scala.actors.ReplyReactor$class.resumeReceiver(ReplyReactor.scala:68)
        at net.liftweb.amqp.AMQPSender.resumeReceiver(AMQPSender.scala:15)
        at scala.actors.Actor$class.searchMailbox(Actor.scala:500)
        at net.liftweb.amqp.AMQPSender.searchMailbox(AMQPSender.scala:15)
        at scala.actors.Reactor$$anonfun$startSearch$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(Reactor.scala:117)
        at scala.actors.Reactor$$anonfun$startSearch$1$$anonfun$apply$mcV$sp$1.apply(Reactor.scala:114)
        at scala.actors.Reactor$$anonfun$startSearch$1$$anonfun$apply$mcV$sp$1.apply(Reactor.scala:114)
        at scala.actors.ReactorTask.run(ReactorTask.scala:33)
        at scala.concurrent.forkjoin.ForkJoinPool$AdaptedRunnable.exec(ForkJoinPool.java:611)
        at scala.concurrent.forkjoin.ForkJoinTask.quietlyExec(ForkJoinTask.java:422)
        at scala.concurrent.forkjoin.ForkJoinWorkerThread.mainLoop(ForkJoinWorkerThread.java:340)
        at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:325)
</pre><div><br></div></span><br>-- <br>L.G. Meredith<br>Managing Partner<br>Biosimilarity LLC<br>7329 39th Ave SW<div>Seattle, WA 98136<br><br><a href="tel:%2B1%20206.650.3740" value="+12066503740" target="_blank">+1 206.650.3740</a><br>
<br><a href="http://biosimilarity.blogspot.com" target="_blank">http://biosimilarity.blogspot.com</a></div>
<br>
</div>