camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ariekenb <aaron.j.riekenb...@lmco.com>
Subject Re: Attemp to send message to activemq temporary queue using producerTemplate: InvalidMetadataException
Date Wed, 10 Feb 2010 15:27:23 GMT

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.ByteSequence@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.riekenberg@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.riekenberg@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.


Mime
View raw message