activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tikboy <tikboy.balat...@gmail.com>
Subject Getting a "Cannot publish to a deleted Destination" but eventually works after a couple of retries
Date Thu, 26 Jun 2014 04:29:13 GMT
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.

Mime
View raw message