我有一个简单的 Camel 应用程序,它正在跟踪 JMS 端点。我目前遇到一个问题,似乎没有确认接收到的 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 id="jms.tracer"
uri="jmsTrace:queue:${jms.openlink-tracer-queue.jndiname}" />
编辑:
这是使用 TibcoEMS 作为代理。
我可以在日志中看到以下内容:
[2012 年 7 月 11 日 11:39:46] 调试 [] (AbstractPollingMessageListenerContainer.java:313) - 从消费者 [QueueReceiver[queue=f2b.prototype.tracer.queue] 收到类型为 [class com.tibco.tibjms.TibjmsObjectMessage] 的消息] 会话 [com.tibco.tibjms.TibjmsSession@16c143]
[2012 年 7 月 11 日 11:39:46] 调试 [] (EndpointMessageListener.java:72) - Endpoint[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} JMSRedelivered= {false} JMSCorrelationID={null} JMSType={null} JMSTimestamp={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 消息发送到:Queue[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} } Properties={ }对象={com.db.cif.tracer.jpa.model.JpaTraceEventMessage@16119a} }
测试
[2012 年 7 月 11 日 11:39:52] 调试 [] (AbstractPollingMessageListenerContainer.java:313) - 从消费者 [QueueReceiver[queue=f2b.prototype.tracer.queue] 收到类型为 [class com.tibco.tibjms.TibjmsObjectMessage] 的消息] 会话 [com.tibco.tibjms.TibjmsSession@16c143]
[2012 年 7 月 11 日 11:39:52] 调试 [] (EndpointMessageListener.java:72) - Endpoint[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} JMSRedelivered= {false} JMSCorrelationID={null} JMSType={null} JMSTimestamp={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 消息发送到:Queue[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} } Properties={ }对象={com.db.cif.tracer.jpa.model.JpaTraceEventMessage@3b09b4} }