Hi

We have an application that runs on Glassfish 3.1. It uses Camel to publish
a request/reply JMS message to an AMQ broker. The message is then consumed
by a Camel JMS listener running on Fuse 7.0. 

This setup works most of the time but sometimes, when the camel route on
Fuse is sending the reply back, the temporary queue cannot be found and
would throw an "org.springframework.jms.InvalidDestinationException: Cannot
publish to a deleted Destination" exception. A redelivery would be attempted
by the camel route on Fuse up to 5 times (base on our policy). Eventually
the response would be delivered after a couple of retries.

I initially thought that the connection between the Glassfish Camel route to
AMQ had already broken causing the temporary queue to be deleted but base on
what had happened, Glassfish was able to process the response sent by Fuse
even after it caught an InvalidDestinationException and doing a couple of
retries.

Can somebody please enlighten me on what might have happened causing this
behavior?

Camel route on Glassfish that sends messages to AMQ
<route autoStartup="true" id="SendEmailMapRoute">
        <from uri="direct:SendEMailMapStart"/>
        <to
uri="activemq:queue:com.mycompany.router.RouterService?disableTimeToLive=true&amp;requestTimeout=180000"/>
        <camel:process ref="ClientResponseProcessor"/>
</route>


Camel route on Fuse that processes messages received from AMQ
@Override
public void configure() throws Exception {
        
        from("activemq:queue:com.mycompany.router.RouterService")
                .setExchangePattern(ExchangePattern.InOut)
                .doTry()
                        .log(LoggingLevel.INFO,  "Dedicated Channel JMS request 
received ${id}")
                        .log(LoggingLevel.INFO,  "Dedicated Channel JMS request 
headers:
${headers}")
                        .log(LoggingLevel.DEBUG,  "Dedicated Channel JMS 
request body: ${body}")
                        
                        .to("nmr:preProcessor")
                        .to("nmr:validateMessage")
                        .to("nmr:serviceEndpoint")
                        .to("nmr:postProcessor")
                        .to("nmr:processSuccess")
                        
                        .log(LoggingLevel.DEBUG,  "Dedicated Channel JMS 
response body: ${body}")
                .doCatch(HTTPException.class, SocketException.class,
SocketTimeoutException.class)
                        .to("nmr:processFailException")
                        .throwException(new EaiPlatformException("Unable to 
communicate with the
server."))
                .doCatch(SoapFault.class)
                        .to("nmr:processSuccessException")
                .doCatch(Exception.class)
                        .to("nmr:processFailException")
                ;
}

Stack Trace:
2014-06-25 19:19:10,158 | WARN  | TION_LIST_EVENT] | EndpointMessageListener    
     
| 139 - org.apache.camel.camel-core - 2.9.0.fuse-70-097 | Execution of JMS
message listener failed. Caused
 by: [org.apache.camel.RuntimeCamelException -
org.springframework.jms.InvalidDestinationException: Cannot publish to a
deleted Destination: temp-queue://ID:pksprodcl1app01-64463-1403693883558
-0:3:1; nested exception is javax.jms.InvalidDestinationException: Cannot
publish to a deleted Destination:
temp-queue://ID:pksprodcl1app01-64463-1403693883558-0:3:1]
org.apache.camel.RuntimeCamelException:
org.springframework.jms.InvalidDestinationException: Cannot publish to a
deleted Destination:
temp-queue://ID:pksprodcl1app01-64463-1403693883558-0:3:1;
 nested exception is javax.jms.InvalidDestinationException: Cannot publish
to a deleted Destination:
temp-queue://ID:pksprodcl1app01-64463-1403693883558-0:3:1
        at
org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1277)[139:org.apache.camel.camel-core:2.9.0.fuse-70-097]
        at
org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:125)[146:org.apache.camel.camel-jms:2.9.0.fuse-70-097]
        at
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:560)[145:org.springframework.jms:3.0.7.RELEASE]
        at
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:498)[145:org.springframework.jms:3.0.7.RELEASE]
        at
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467)[145:org.springframework.jms:3.0.7.RELEASE]
        at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325)[145:org.springframework.jms:3.0.7.RELE
ASE]
        at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:243)[145:org.springframework.jms:3.0.7.RELEAS
E]
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)[145:org.springframework.jms:3.
0.7.RELEASE]
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)[145:org.springframework.jm
s:3.0.7.RELEASE]
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)[145:org.springframework.jms:3.0.7.RELEASE]
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)[:1.6.0_45]
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)[:1.6.0_45]
        at java.lang.Thread.run(Thread.java:662)[:1.6.0_45]
Caused by: org.springframework.jms.InvalidDestinationException: Cannot
publish to a deleted Destination:
temp-queue://ID:pksprodcl1app01-64463-1403693883558-0:3:1; nested exception
is javax.jm
s.InvalidDestinationException: Cannot publish to a deleted Destination:
temp-queue://ID:pksprodcl1app01-64463-1403693883558-0:3:1
        at
org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:285)[145:org.springframework.jms:3.0.7.RELEASE]
        at
org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:168)[145:org.springframework.jms:3.0.7.RELEASE]
        at
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:469)[145:org.springframework.jms:3.0.7.RELEASE]
        at
org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:197)[146:org.apache.camel.camel-jms:2.9.0.fuse-70-097]
        at
org.apache.camel.component.jms.EndpointMessageListener.sendReply(EndpointMessageListener.java:353)[146:org.apache.camel.camel-jms:2.9.0.fuse-70-097]
        at
org.apache.camel.component.jms.EndpointMessageListener$EndpointMessageListenerAsyncCallback.done(EndpointMessageListener.java:206)[146:org.apache.camel.camel-jms:2.9.0.fuse-70-097]
        at
org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:108)[146:org.apache.camel.camel-jms:2.9.0.fuse-70-097]
        ... 11 more
Caused by: javax.jms.InvalidDestinationException: Cannot publish to a
deleted Destination:
temp-queue://ID:pksprodcl1app01-64463-1403693883558-0:3:1
        at
org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1705)[120:org.apache.activemq.activemq-core:5.5.1.fuse-70-097]
        at
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:231)[120:org.apache.activemq.activemq-core:5.5.1.fuse-70-097]
        at
org.apache.activemq.pool.PooledProducer.send(PooledProducer.java:74)[114:org.apache.activemq.activemq-pool:5.5.1.fuse-70-097]
        at
org.apache.activemq.pool.PooledProducer.send(PooledProducer.java:59)[114:org.apache.activemq.activemq-pool:5.5.1.fuse-70-097]
        at
org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:592)[145:org.springframework.jms:3.0.7.RELEASE]
        at
org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.doSend(JmsConfiguration.java:275)[146:org.apache.camel.camel-jms:2.9.0.fuse-70-097]
        at
org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.doSendToDestination(JmsConfiguration.java:214)[146:org.apache.camel.camel-jms:2.9.0.fuse-70-097]
        at
org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.access$100(JmsConfiguration.java:156)[146:org.apache.camel.camel-jms:2.9.0.fuse-70-097]
        at
org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate$4.doInJms(JmsConfiguration.java:199)[146:org.apache.camel.camel-jms:2.9.0.fuse-70-097]
        at
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:466)[145:org.springframework.jms:3.0.7.RELEASE]
        ... 15 more




--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Getting-a-Cannot-publish-to-a-deleted-Destination-but-eventually-works-after-a-couple-of-retries-tp4682497.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to