<div dir="ltr"><div>Rabbit 3.2.1</div>.Net Client<div>F5 Load balancer</div><div>2 node cluster</div><div><br></div><div>I am trying to debug an issue with our dequeueing code and a cluster. We have a Windows service that starts up with three threads each maintaining its own instance of IModel. That Model is reused each time the thread loops around to Dequeue a message.</div>
<div><br></div><div>I am testing how well our Windows service stands up to a node going down. I do this by simply stopping the Rabbit MQ service on the Master node.</div><div><br></div><div>In our Windows Service I catch the OperationInterruptedException and AlreadyClosedException exceptions. When caught I set that thread's Model to null and it will be recreated the next time around the Dequeue loop.</div>
<div><br></div><div>This approach works fine when the Queues are empty and the loop time is infrequent.However when I take the node down and our Windows service is dequeuing and\or Acking messages I hit a problem on one of the threads.</div>
<div><br></div><div>As an example threads 1 and 2 will both catch separate instances of AlreadyClosedException and reset their IModel. Next time around Thread 1 will reconnect its Model and start dequeueing but Thread 2 will get a BrokerUnreachableException. I have tried retrying that reconnect with some Thread.Sleep delays and it does not help. Once "broken" that thread gets BrokerUnreachableException every time.</div>
<div><br></div><div>Any ideas as to why this might be?</div><div><br></div><div>Thanks</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br>
</div><div><br clear="all"><div><br></div>-- <br>Patrick Long - Munkiisoft Ltd
</div></div>