Details
Description
An exception during the first attempt to resolve a temporary destination will cause an infinitive wait for next resolve attempts after the exception is cleared.
A likely scenario for this behaviour to occur is when no connection to a jms server can be established during startup.
This bug is caused by not setting the refreshWanted to false when no previous destination exists in the org.apache.camel.component.jms.reply.TemporaryQueueReplyManager$TemporaryReplyQueueDestinationResolver class.
public Destination resolveDestinationName(Session session, String destinationName, boolean pubSubDomain) throws JMSException { // use a temporary queue to gather the reply message synchronized (refreshWanted) { if (queue == null || refreshWanted.compareAndSet(true, false)) { queue = session.createTemporaryQueue(); setReplyTo(queue); if (log.isDebugEnabled()) { log.debug("Refreshed Temporary ReplyTo Queue. New queue: {}", queue.getQueueName()); } refreshWanted.notifyAll(); } } return queue; }
When queue == null the refreshWanted.compareAndSet(true, false) is not executed.