I have a rabbitmq message publisher. It checks if a connection(com.rabbitmq.client.Connection) is active and creates one(via com.rabbitmq.client.ConnectionFactory) if none exists and then creates a channel(com.rabbitmq.client.Channel) in that connection via which it will publish message(basicPublish). createChannel() function fails intermittently with the following backtrace:
java.io.IOException
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106) ~[amqp-client-3.5.2.jar:?]
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102) ~[amqp-client-3.5.2.jar:?]
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124) ~[amqp-client-3.5.2.jar:?]
at com.rabbitmq.client.impl.ChannelN.open(ChannelN.java:125) ~[amqp-client-3.5.2.jar:?]
at com.rabbitmq.client.impl.ChannelManager.createChannel(ChannelManager.java:134) ~[amqp-client-3.5.2.jar:?]
at com.rabbitmq.client.impl.AMQConnection.createChannel(AMQConnection.java:499) ~[amqp-client-3.5.2.jar:?]
at com.limeroad.services.rabbitmq.RabbitMQPublisher.publishMessage(RabbitMQPublisher.java:68) ~[utils-1.0.jar:?]
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error
at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67) ~[amqp-client-3.5.2.jar:?]
at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33) ~[amqp-client-3.5.2.jar:?]
at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:348) ~[amqp-client-3.5.2.jar:?]
at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:221) ~[amqp-client-3.5.2.jar:?]
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118) ~[amqp-client-3.5.2.jar:?]
... 68 more
Caused by: java.net.SocketException: No route to host
at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.7.0_75]
at java.net.SocketInputStream.read(SocketInputStream.java:152) ~[?:1.7.0_75]
at java.net.SocketInputStream.read(SocketInputStream.java:122) ~[?:1.7.0_75]
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) ~[?:1.7.0_75]
at java.io.BufferedInputStream.read(BufferedInputStream.java:254) ~[?:1.7.0_75]
at java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288) ~[?:1.7.0_75]
at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:95) ~[amqp-client-3.5.2.jar:?]
at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:139) ~[amqp-client-3.5.2.jar:?]
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:534) ~[amqp-client-3.5.2.jar:?]
... 1 more
I am not sure why this is happening. Can anybody guide me in the right direction to debug this further and solve this issue.