Apache camel 确认来自驼峰端点的JMS消息时出现问题

Apache camel 确认来自驼峰端点的JMS消息时出现问题,apache-camel,spring-jms,Apache Camel,Spring Jms,我有一个简单的Camel应用程序,可以跟踪JMS端点。我目前遇到一个问题,接收到的JMS消息似乎没有得到确认,它正在从队列中读取,而没有任何消息放在队列上,并且当前队列深度没有减少 你知道是什么导致了这个问题吗 追踪路线 SpringJMS配置 Spring端点配置 编辑: 这是使用Tibcomes作为代理 我在日志中看到的是以下内容: [2012年7月11日11:39:46]调试[] AbstractPollingMessageListenerContainer.java:313-收到的消息

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

你知道是什么导致了这个问题吗

追踪路线

SpringJMS配置

Spring端点配置

编辑:

这是使用Tibcomes作为代理

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

[2012年7月11日11:39:46]调试[] 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]调试[]EndpointMessageListener.java:72- 端点[jmsTrace://queue:/user_dev/db/us/GTO/CIFramework/S001DEV/f2b.prototype.tracer.queue:queue] 使用者收到JMS消息:ObjectMessage={Header={ JMSMessageID={ID:db_us_GTO_CIFramework_S001DEV.20D84FDA9F769B1A97:3} JMSDestination={Queue[f2b.prototype.tracer.Queue]}JMSReplyTo={null} JMSDeliveryMode={PERSISTENT}jmsrelivered={false} JMSCorrelationID={null}JMSType={null}jmstiestamp={Wed Jul 11 10:53:48 CDT 2012}JMSExpiration={0}JMSPriority={4}}Properties={} Object={com.db.cif.tracer.jpa.model。JpaTraceEventMessage@1dfe3f}}

[2012年7月11日11:39:46]调试[]JmsTemplate.java:464-正在执行 JMS会话上的回调:com.tibco.tibjms。TibjmsSession@16c143

[2012年7月11日11:39:46]调试[]JmsConfiguration.java:266-发送 JMS消息发送到:队列[f2b.prototype.tracer.Queue],消息为: ObjectMessage={Header={JMSMessageID={null}JMSDestination={null} JMSReplyTo={null}JMSDeliveryMode={PERSISTENT}JMSRepelivered={false} JMSCorrelationID={null}JMSType={null}jmstiestamp={0} JMSExpiration={0}JMSPriority={4}}属性={} Object={com.db.cif.tracer.jpa.model。JpaTraceEventMessage@16119a}}

试验

[2012年7月11日11:39:52]调试[] 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]调试[]EndpointMessageListener.java:72- 端点[jmsTrace://queue:/user_dev/db/us/GTO/CIFramework/S001DEV/f2b.prototype.tracer.queue:queue] 使用者收到JMS消息:ObjectMessage={Header={ JMSMessageID={ID:db_us_GTO_CIFramework_S001DEV.20D84FDA9F769B1A97:4} JMSDestination={Queue[f2b.prototype.tracer.Queue]}JMSReplyTo={null} JMSDeliveryMode={PERSISTENT}jmsrelivered={false} JMSCorrelationID={null}JMSType={null}jmstiestamp={Wed Jul 11 10:53:50 CDT 2012}JMSExpiration={0}JMSPriority={4}}Properties={} Object={com.db.cif.tracer.jpa.model。JpaTraceEventMessage@1d81bc5}}

[2012年7月11日11:39:52]调试[]JmsTemplate.java:464-正在执行 JMS会话上的回调:com.tibco.tibjms。TibjmsSession@16c143

[2012年7月11日11:39:52]调试[]JmsConfiguration.java:266-发送 JMS消息发送到:队列[f2b.prototype.tracer.Queue],消息为: ObjectMessage={Header={JMSMessageID={null}JMSDestination={null} JMSReplyTo={null}JMSDeliveryMode={PERSISTENT}JMSRepelivered={false} JMSCorrelationID={null}JMSType={null}jmstiestamp={0} JMSExpiration={0}JMSPriority={4}}属性={} Object={com.db.cif.tracer.jpa.model。JpaTraceEventMessage@3b09b4}}


我知道我在做傻事

我仔细查看了跟踪消息,意识到在我的上下文中启用了跟踪,从而跟踪了我的跟踪路径,从而形成了一个漂亮的无限循环

    from("jms.tracer")
        .id("openlink-input-trace")
        .process(new Processor()
        {
            @Override
            public void process(Exchange exchange) throws Exception 
            {
                System.out.println("test");
            }
        });
<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>
    <endpoint id="jms.tracer"
              uri="jmsTrace:queue:${jms.openlink-tracer-queue.jndiname}" />