Hi

I have created a ticket to track this
https://issues.apache.org/activemq/browse/CAMEL-2470

If possible you are welcome to attach your sample to the ticket and
provide more details there.

On Sat, Feb 13, 2010 at 2:14 PM, ariekenb <aaron.j.riekenb...@lmco.com> wrote:
>
> Attached is a small sample test case.  I see you have already resolved
> CAMEL-2456 which was written for the exception when trying to send to a
> temporary queue.  Does this also solve the problem in this test case where
> the message is sent to the wrong temporary queue?
>
> Here is what the test does:
>
> 1. A client creates a temporary queue and registers a MessageListener for
> it.  The client sends a message to the queue "test.queue" with the temporary
> queue set as the JMSReplyTo:
>
> 07:06:13,109 INFO  Test - client created temporary queue
> ID:core2-34974-1266066372002-2:1:1
>
>
> 2. The server receives the message from the client:
>
> 07:06:13,154 INFO  Test - TestServer.handleMessage jmsReplyTo =
> temp-queue://ID:core2-34974-1266066372002-2:1:1 body = request
>
>
> 3. The server uses a producer template to try to send a response back to the
> client on the temporary queue.  Here the InvalidMetadataException happens:
>
> 07:06:13,154 INFO  Test - calling producerTemplate.sendBody,
> tempQueueEndpointName =
> activemq:temp:queue:ID:core2-34974-1266066372002-2:1:1
> 07:06:13,316 WARN  DefaultManagementLifecycleStrategy - Could not register
> Endpoint MBean for uri:
> activemq://temp:queue:ID:core2-34974-1266066372002-2:1:1
> org.springframework.jmx.export.metadata.InvalidMetadataException: No
> ManagedResource attribute found for class: class
> org.apache.camel.component.jms.JmsTemporaryQueueEndpoint
>
>
> 4. From the debug camel logging, camel decides to send the response message
> to a DIFFERENT temporary queue than what the server specified in the call to
> sendBody.  Notice the original temporary queue name ends in 2:1:1, the new
> temporary queue ends in 2:2:1.
>
> Also notice the client never receives the response message.  This is because
> it was sent to the wrong temporary queue.  If you run JConsole at this
> point, you will notice there are 2 temporary queues: the original one
> created by the client ending in 2:1:1, and a new one created by camel ending
> in 2:2:1.  The response message from the server was sent to the new
> temporary queue created by camel.
>
> 07:06:13,356 DEBUG JmsConfiguration$CamelJmsTemplate - Sending JMS message
> to: temp-queue://ID:core2-34974-1266066372002-2:2:1 with message:
> ActiveMQTextMessage {commandId = 0, responseRequired = false, messageId =
> null, originalDestination = null, originalTransactionId = null, producerId =
> null, destination = null, transactionId = null, expiration = 0, timestamp =
> 0, arrival = 0, brokerInTime = 0, brokerOutTime = 0, correlationId = null,
> replyTo = null, persistent = false, type = null, priority = 0, groupID =
> null, groupSequence = 0, targetConsumerId = null, compressed = false, userID
> = null, content = null, marshalledProperties = null, dataStructure = null,
> redeliveryCounter = 0, size = 0, properties = null, readOnlyProperties =
> false, readOnlyBody = false, droppable = false, text = response}
>
>
>
>
>
> Claus Ibsen-2 wrote:
>>
>> Hi
>>
>> Create a small sample of your project and attached it to a JIRA ticket.
>> Then we can take a look at it.
>>
>>
>> On Wed, Feb 10, 2010 at 4:27 PM, ariekenb <aaron.j.riekenb...@lmco.com>
>> wrote:
>>>
>>> I turned on DEBUG for org.apache.camel.component.jms.
>>>
>>> Here is what I see when I send to the temporary queue.
>>>
>>> My client is listening on the temporary queue named
>>> ID:mwgk-36105-1265815399399-0:0:1 and you can see from my logging this is
>>> the name I pass to ProducerTemplate.sendBody.
>>>
>>> However from the jms component logging, it actually sends to a different
>>> temporary queue named temp-queue://ID:mwgk-33195-1265814473274-2:11:1.
>>>
>>> I can see from JConsole that the EnqueueCount on
>>> ID:mwgk-33195-1265814473274-2:11:1 does get incremented.  But my
>>> subscriber
>>> is not getting any message because camel is sending to a new temporary
>>> queue.
>>>
>>>
>>> 09:23:19,661 | INFO  | tenerContainer-1 | SDSSFlightPublisher
>>>  |
>>> face.service.SDSSFlightPublisher  154 | sending to endpointName =
>>> 'activemq:temp:queue:ID:mwgk-36105-1265815399399-0:0:1'
>>> 09:23:19,739 | WARN  | tenerContainer-1 |
>>> faultManagementLifecycleStrategy |
>>> faultManagementLifecycleStrategy  187 | Could not register Endpoint MBean
>>> for uri: activemq://temp:queue:ID:mwgk-36105-1265815399399-0:0:1
>>> org.springframework.jmx.export.metadata.InvalidMetadataException: No
>>> ManagedResource attribute found for class: class
>>> org.apache.camel.component.jms.JmsTemporaryQueueEndpoint
>>>        at
>>> org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler.populateMBeanDescriptor(MetadataMBeanInfoAssembler.java:279)
>>>        at
>>> org.springframework.jmx.export.assembler.AbstractMBeanInfoAssembler.getMBeanInfo(AbstractMBeanInfoAssembler.java:69)
>>>        at
>>> org.apache.camel.management.DefaultManagementAgent.register(DefaultManagementAgent.java:202)
>>>        at
>>> org.apache.camel.management.DefaultManagementAgent.register(DefaultManagementAgent.java:193)
>>>        at
>>> org.apache.camel.management.ManagedManagementStrategy.manageNamedObject(ManagedManagementStrategy.java:69)
>>>        at
>>> org.apache.camel.management.ManagedManagementStrategy.manageObject(ManagedManagementStrategy.java:62)
>>>        at
>>> org.apache.camel.management.DefaultManagementLifecycleStrategy.onEndpointAdd(DefaultManagementLifecycleStrategy.java:185)
>>>        at
>>> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:432)
>>>        at
>>> org.apache.camel.impl.DefaultProducerTemplate.resolveMandatoryEndpoint(DefaultProducerTemplate.java:402)
>>>        at
>>> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:116)
>>>        at
>>> com.lmco.irad.tfdm.sdssinterface.service.SDSSFlightPublisher.publishNotificationToOneSubscriber(SDSSFlightPublisher.java:155)
>>>        at
>>> com.lmco.irad.tfdm.sdssinterface.service.SDSSFlightManager.reconstituteSubscriberID(SDSSFlightManager.java:128)
>>>        at
>>> com.lmco.irad.tfdm.sdssinterface.service.SDSSSubscriptionHandler.processSubscriptionRequest(SDSSSubscriptionHandler.java:59)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>        at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>        at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>>        at
>>> org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:195)
>>>        at
>>> org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:115)
>>>        at
>>> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:117)
>>>        at
>>> org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:83)
>>>        at
>>> org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543)
>>>        at
>>> org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482)
>>>        at
>>> org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
>>>        at
>>> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
>>>        at
>>> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)
>>>        at
>>> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982)
>>>        at
>>> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974)
>>>        at
>>> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876)
>>>        at java.lang.Thread.run(Thread.java:619)
>>> 09:23:19,747 | DEBUG | tenerContainer-1 | JmsProducer
>>>  |
>>> pache.camel.impl.DefaultProducer   66 | Starting producer:
>>> Producer[activemq://temp:queue:ID:mwgk-36105-1265815399399-0:0:1]
>>> 09:23:19,770 | DEBUG | tenerContainer-1 |
>>> msConfiguration$CamelJmsTemplate |
>>> ngframework.jms.core.JmsTemplate  469 | Executing callback on JMS
>>> Session:
>>> PooledSession { ActiveMQSession
>>> {id=ID:mwgk-33195-1265814473274-2:11:1,started=false} }
>>> 09:23:19,784 | DEBUG | tenerContainer-1 |
>>> msConfiguration$CamelJmsTemplate |
>>> msConfiguration$CamelJmsTemplate  280 | Sending JMS message to:
>>> temp-queue://ID:mwgk-33195-1265814473274-2:11:1 with message:
>>> ActiveMQObjectMessage {commandId = 0, responseRequired = false, messageId
>>> =
>>> null, originalDestination = null, originalTransactionId = null,
>>> producerId =
>>> null, destination = null, transactionId = null, expiration = 0, timestamp
>>> =
>>> 0, arrival = 0, brokerInTime = 0, brokerOutTime = 0, correlationId =
>>> null,
>>> replyTo = null, persistent = false, type = null, priority = 0, groupID =
>>> null, groupSequence = 0, targetConsumerId = null, compressed = false,
>>> userID
>>> = null, content = org.apache.activemq.util.byteseque...@1ce2a846,
>>> marshalledProperties = null, dataStructure = null, redeliveryCounter = 0,
>>> size = 0, properties = null, readOnlyProperties = false, readOnlyBody =
>>> false, droppable = false}
>>>
>>>
>>>
>>>
>>>
>>> Claus Ibsen-2 wrote:
>>>>
>>>> Camel logs before it send the JMS message
>>>>
>>>>                 if (logger.isDebugEnabled()) {
>>>>                     logger.debug("Sending JMS message to: " +
>>>> producer.getDestination() + " with message: " + message);
>>>>                 }
>>>>
>>>> So if you enable DEBUG logging for org.apache.camel.component.jms you
>>>> should see that log line
>>>>
>>>>
>>>>
>>>> On Wed, Feb 10, 2010 at 3:36 PM, ariekenb <aaron.j.riekenb...@lmco.com>
>>>> wrote:
>>>>>
>>>>> Claus -
>>>>>
>>>>> The exception is logged as WARN.  No exception is thrown out of the
>>>>> ProducerTemplate.sendBody call however.
>>>>>
>>>>> More importantly, no message is ever actually sent to the
>>>>> TemporaryQueue.
>>>>> The client listening to the TemporaryQueue does not receive any
>>>>> message,
>>>>> and
>>>>> JConsole shows the EnqueueCount for the TemporaryQueue remains at 0.
>>>>>
>>>>> Here is a more complete stack trace showing the error message and log
>>>>> level:
>>>>>
>>>>> 08:30:43,389 | WARN  | tenerContainer-1 |
>>>>> faultManagementLifecycleStrategy |
>>>>> faultManagementLifecycleStrategy  187 | Could not register Endpoint
>>>>> MBean
>>>>> for uri: activemq://temp:queue:ID:mwgk-45812-1265812243018-0:0:1
>>>>> org.springframework.jmx.export.metadata.InvalidMetadataException: No
>>>>> ManagedResource attribute found for class: class
>>>>> org.apache.camel.component.jms.JmsTemporaryQueueEndpoint
>>>>>        at
>>>>> org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler.populateMBeanDescriptor(MetadataMBeanInfoAssembler.java:279)
>>>>>        at
>>>>> org.springframework.jmx.export.assembler.AbstractMBeanInfoAssembler.getMBeanInfo(AbstractMBeanInfoAssembler.java:69)
>>>>>        at
>>>>> org.apache.camel.management.DefaultManagementAgent.register(DefaultManagementAgent.java:202)
>>>>>        at
>>>>> org.apache.camel.management.DefaultManagementAgent.register(DefaultManagementAgent.java:193)
>>>>>        at
>>>>> org.apache.camel.management.ManagedManagementStrategy.manageNamedObject(ManagedManagementStrategy.java:69)
>>>>>        at
>>>>> org.apache.camel.management.ManagedManagementStrategy.manageObject(ManagedManagementStrategy.java:62)
>>>>>        at
>>>>> org.apache.camel.management.DefaultManagementLifecycleStrategy.onEndpointAdd(DefaultManagementLifecycleStrategy.java:185)
>>>>>        at
>>>>> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:432)
>>>>>        at
>>>>> org.apache.camel.impl.DefaultProducerTemplate.resolveMandatoryEndpoint(DefaultProducerTemplate.java:402)
>>>>>        at
>>>>> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:116)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Claus Ibsen-2 wrote:
>>>>>>
>>>>>> Hi
>>>>>>
>>>>>> On Tue, Feb 9, 2010 at 7:46 PM, ariekenb <aaron.j.riekenb...@lmco.com>
>>>>>> wrote:
>>>>>>>
>>>>>>> I'm running apache-servicemix 4.1.0-psc-01-00RC1, using the included
>>>>>>> version
>>>>>>> of ActiveMQ and Camel.  I have some code that's receiving a message
>>>>>>> from
>>>>>>> an
>>>>>>> ActiveMQ queue, then sending a message to the temporary queue it got
>>>>>>> from
>>>>>>> JMSReplyTo.
>>>>>>>
>>>>>>>       �...@endpointinject
>>>>>>>        private ProducerTemplate producerTemplate = null;
>>>>>>>
>>>>>>>
>>>>>>>       �...@consume(uri = "subscriptionRequestEndpoint")
>>>>>>>        public synchronized void processSubscriptionRequest(
>>>>>>>                       �...@header("JMSReplyTo") Destination jmsReplyTo,
>>>>>>>                       �...@body SubscriptionManagerRegister
>>>>>>> registrationMessage) {
>>>>>>>                try {
>>>>>>>                        log.info("got registration request client name
>>>>>>> =
>>>>>>> "
>>>>>>>                                        +
>>>>>>> registrationMessage.getClientName() + " jmsReplyTo = "
>>>>>>>                                        + jmsReplyTo);
>>>>>>>                        tempQueueList.add((TemporaryQueue)
>>>>>>> jmsReplyTo);
>>>>>>>                        publishMessageToSubscriber((TemporaryQueue)
>>>>>>> jmsReplyTo, "hello");
>>>>>>>                } catch (Exception e) {
>>>>>>>                        log.warn("processSubscriptionRequest", e);
>>>>>>>                }
>>>>>>>        }
>>>>>>>
>>>>>>>        public synchronized void publishMessageToSubscriber(
>>>>>>>                        TemporaryQueue temporaryQueue, Serializable
>>>>>>> message) {
>>>>>>>                try {
>>>>>>>                        final String endpointName =
>>>>>>> "activemq:temp:queue:"
>>>>>>>                                        +
>>>>>>> temporaryQueue.getQueueName();
>>>>>>>                        producerTemplate.sendBody(endpointName,
>>>>>>> message);
>>>>>>>                } catch (Exception e) {
>>>>>>>                        log.warn("publishMessageToSubscriber", e);
>>>>>>>                }
>>>>>>>        }
>>>>>>>
>>>>>>> When the producerTemplate.sendBody call runs, I get the following
>>>>>>> exception.
>>>>>>> Is this a camel bug or am I doing something wrong?
>>>>>>>
>>>>>>> org.springframework.jmx.export.metadata.InvalidMetadataException: No
>>>>>>> ManagedResource attribute found for class: class
>>>>>>> org.apache.camel.component.jms.JmsTemporaryQueueEndpoint
>>>>>>>        at
>>>>>>> org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler.populateMBeanDescriptor(MetadataMBeanInfoAssembler.java:279)
>>>>>>>        at
>>>>>>> org.springframework.jmx.export.assembler.AbstractMBeanInfoAssembler.getMBeanInfo(AbstractMBeanInfoAssembler.java:69)
>>>>>>>        at
>>>>>>> org.apache.camel.management.DefaultManagementAgent.register(DefaultManagementAgent.java:202)
>>>>>>>        at
>>>>>>> org.apache.camel.management.DefaultManagementAgent.register(DefaultManagementAgent.java:193)
>>>>>>>        at
>>>>>>> org.apache.camel.management.ManagedManagementStrategy.manageNamedObject(ManagedManagementStrategy.java:69)
>>>>>>>        at
>>>>>>> org.apache.camel.management.ManagedManagementStrategy.manageObject(ManagedManagementStrategy.java:62)
>>>>>>>        at
>>>>>>> org.apache.camel.management.DefaultManagementLifecycleStrategy.onEndpointAdd(DefaultManagementLifecycleStrategy.java:185)
>>>>>>>        at
>>>>>>> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:432)
>>>>>>>        at
>>>>>>> org.apache.camel.impl.DefaultProducerTemplate.resolveMandatoryEndpoint(DefaultProducerTemplate.java:402)
>>>>>>>        at
>>>>>>> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:116)
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> At what level do this stacktrace get logged? ERROR, DEBUG, INFO etc?
>>>>>>
>>>>>>> --
>>>>>>> View this message in context:
>>>>>>> http://old.nabble.com/Attemp-to-send-message-to-activemq-temporary-queue-using-producerTemplate%3A-InvalidMetadataException-tp27520096p27520096.html
>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Claus Ibsen
>>>>>> Apache Camel Committer
>>>>>>
>>>>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>>>>> Open Source Integration: http://fusesource.com
>>>>>> Blog: http://davsclaus.blogspot.com/
>>>>>> Twitter: http://twitter.com/davsclaus
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://old.nabble.com/Attemp-to-send-message-to-activemq-temporary-queue-using-producerTemplate%3A-InvalidMetadataException-tp27520096p27532128.html
>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Claus Ibsen
>>>> Apache Camel Committer
>>>>
>>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>>> Open Source Integration: http://fusesource.com
>>>> Blog: http://davsclaus.blogspot.com/
>>>> Twitter: http://twitter.com/davsclaus
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://old.nabble.com/Attemp-to-send-message-to-activemq-temporary-queue-using-producerTemplate%3A-InvalidMetadataException-tp27520096p27532910.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Author of Camel in Action: http://www.manning.com/ibsen/
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>>
>>
> http://old.nabble.com/file/p27574989/camel.temp.queue.test.zip
> camel.temp.queue.test.zip
> --
> View this message in context: 
> http://old.nabble.com/Attemp-to-send-message-to-activemq-temporary-queue-using-producerTemplate%3A-InvalidMetadataException-tp27520096p27574989.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Reply via email to