从Camel端点确认JMS消息的问题

时间:2012-07-11 17:12:01

标签: apache-camel spring-jms

我有一个跟踪JMS端点的简单Camel应用程序。我目前遇到的问题是,收到的JMS消息似乎没有得到确认(它正在从队列中读取而没有任何消息被放在上面而且当前队列深度没有减少)。

有关可能导致此问题的任何想法吗?

追踪路线

    from("jms.tracer")
        .id("openlink-input-trace")
        .process(new Processor()
        {
            @Override
            public void process(Exchange exchange) throws Exception 
            {
                System.out.println("test");
            }
        });

Spring JMS配置

<bean id="tracerQueueConnFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate" ref="jndiTemplate" />
    <property name="jndiName" value="${jms.openlink-tracer-queue-qcf.jndiname}" />
</bean>

<bean id="proxyTracerQueueConnFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
    <property name="targetConnectionFactory" ref="tracerQueueConnFactory" />
    <property name="username" value="${jms.openlink-tracer-queue-qcf.username}" />
    <property name="password" value="${jms.openlink-tracer-queue-qcf.password}" />
</bean>

<bean id="jmsTrace" class="org.apache.camel.component.jms.JmsComponent">
    <property name="connectionFactory" ref="proxyTracerQueueConnFactory" />
    <property name="destinationResolver" ref="jndiResolver" />
</bean>

Spring Endpoint配置

    <endpoint id="jms.tracer"
              uri="jmsTrace:queue:${jms.openlink-tracer-queue.jndiname}" />

修改

这是使用TibcoEMS作为经纪人。

我在日志中可以看到以下内容:

  

[2012年7月11日11:39:46] DEBUG []   (AbstractPollingMessageListenerContainer.java:313) - 收到消息   来自消费者的[class com.tibco.tibjms.TibjmsObjectMessage]类型   会话的[QueueReceiver [queue = f2b.prototype.tracer.queue]]   [com.tibco.tibjms.TibjmsSession@16c143]

     

[2012年7月11日11:39:46] DEBUG [](EndpointMessageListener.java:72) -   端点[jmsTrace://队列:/user_dev/db/us/GTO/CIFramework/S001DEV/f2b.prototype.tracer.queue:队列]   使用者收到JMS消息:ObjectMessage = {Header = {   JMSMessageID按= {ID:db_us_GTO_CIFramework_S001DEV.20D84FDA9F769B1A97:3}   JMSDestination = {Queue [f2b.prototype.tracer.queue]} JMSReplyTo = {null}   JMSDeliveryMode = {PERSISTENT} JMSRedelivered = {false}   JMSCorrelationID = {null} JMSType = {null} JMSTimestamp = {Wed Jul 11   10:53:48 CDT 2012} JMSExpiration = {0} JMSPriority = {4}}属性= {}   Object={com.db.cif.tracer.jpa.model.JpaTraceEventMessage@1dfe3f}}

     

[2012年7月11日11:39:46] DEBUG [](JmsTemplate.java:464) - 执行   JMS会话回调:com.tibco.tibjms.TibjmsSession@16c143

     

[2012年7月11日11:39:46] DEBUG [](JmsConfiguration.java:266) - 发送   JMS消息:队列[f2b.prototype.tracer.queue],带有消息:   ObjectMessage = {Header = {JMSMessageID = {null} JMSDestination = {null}   JMSReplyTo = {null} JMSDeliveryMode = {PERSISTENT} JMSRedelivered = {false}   JMSCorrelationID = {null} JMSType = {null} JMSTimestamp = {0}   JMSExpiration = {0} JMSPriority = {4}}属性= {}   Object={com.db.cif.tracer.jpa.model.JpaTraceEventMessage@16119a}}

     

测试

     

[2012年7月11日11:39:52] DEBUG []   (AbstractPollingMessageListenerContainer.java:313) - 收到消息   来自消费者的[class com.tibco.tibjms.TibjmsObjectMessage]类型   会话的[QueueReceiver [queue = f2b.prototype.tracer.queue]]   [com.tibco.tibjms.TibjmsSession@16c143]

     

[2012年7月11日11:39:52] DEBUG [](EndpointMessageListener.java:72) -   端点[jmsTrace://队列:/user_dev/db/us/GTO/CIFramework/S001DEV/f2b.prototype.tracer.queue:队列]   使用者收到JMS消息:ObjectMessage = {Header = {   JMSMessageID按= {ID:db_us_GTO_CIFramework_S001DEV.20D84FDA9F769B1A97:4}   JMSDestination = {Queue [f2b.prototype.tracer.queue]} JMSReplyTo = {null}   JMSDeliveryMode = {PERSISTENT} JMSRedelivered = {false}   JMSCorrelationID = {null} JMSType = {null} JMSTimestamp = {Wed Jul 11   10:53:50 CDT 2012} JMSExpiration = {0} JMSPriority = {4}}属性= {}   Object={com.db.cif.tracer.jpa.model.JpaTraceEventMessage@1d81bc5}}

     

[2012年7月11日11:39:52] DEBUG [](JmsTemplate.java:464) - 执行   JMS会话回调:com.tibco.tibjms.TibjmsSession@16c143

     

[2012年7月11日11:39:52] DEBUG [](JmsConfiguration.java:266) - 发送   JMS消息:队列[f2b.prototype.tracer.queue],带有消息:   ObjectMessage = {Header = {JMSMessageID = {null} JMSDestination = {null}   JMSReplyTo = {null} JMSDeliveryMode = {PERSISTENT} JMSRedelivered = {false}   JMSCorrelationID = {null} JMSType = {null} JMSTimestamp = {0}   JMSExpiration = {0} JMSPriority = {4}}属性= {}   Object={com.db.cif.tracer.jpa.model.JpaTraceEventMessage@3b09b4}}

1 个答案:

答案 0 :(得分:0)

我知道我做的事情很愚蠢!

我仔细查看了跟踪消息,并意识到在我的上下文中启用了跟踪,导致我的跟踪路由被跟踪,因此是一个很好的小无限循环。