diff --git a/modules/core/src/main/java/org/apache/synapse/message/store/impl/rabbitmq/RabbitMQStore.java b/modules/core/src/main/java/org/apache/synapse/message/store/impl/rabbitmq/RabbitMQStore.java index 40ed201e98..1727ad0824 100644 --- a/modules/core/src/main/java/org/apache/synapse/message/store/impl/rabbitmq/RabbitMQStore.java +++ b/modules/core/src/main/java/org/apache/synapse/message/store/impl/rabbitmq/RabbitMQStore.java @@ -351,12 +351,15 @@ public void destroy() { @Override public MessageProducer getProducer() { RabbitMQProducer producer = new RabbitMQProducer(this); + boolean producerConnectionInvalidated = false; producer.setId(nextProducerId()); producer.setExchangeName(exchangeName); producer.setRoutingKey(routingKey); if (producerConnection == null) { + producerConnectionInvalidated = true; producerConnection = createConnection(); } else if (!producerConnection.isOpen()) { + producerConnectionInvalidated = true; producerConnection.abort(); producerConnection = createConnection(); } @@ -365,7 +368,7 @@ public MessageProducer getProducer() { if (log.isDebugEnabled()) { log.debug(nameString() + " created message producer " + producer.getId()); } - if (channel == null) { + if (channel == null || producerConnectionInvalidated) { channel = createChannel(producerConnection); } producer.setChannel(channel);