2012-07-11 76 views
0

我有一個簡單的Camel應用程序跟蹤到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"); 
      } 
     }); 

春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> 

春端點配置

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

編輯:

這是使用TibcoEMS作爲經紀人。

我可以在日誌中看到的是以下內容:

[2012年07月11十一時39分46秒] DEBUG [] (AbstractPollingMessageListenerContainer.java:313) - 接收類型的消息 [類com.tibco.tibjms.TibjmsObjectMessage]從消費者 [的QueueReceiver [隊列= f2b.prototype.tracer.queue]]會話 [[email protected]]

[2012年07月11 11點39 :46] DEBUG [](EndpointMessageListener.java:72) - Endpoint [jmsTrace:// queue:/ user_dev /db/us/GTO/CIFramework/S001DEV/f2b.prototype.tracer.queue:queue] 消費者接收JMS消息:ObjectMessage = {標題= { JMSMessageID按= {ID:db_us_GTO_CIFramework_S001DEV.20D84FDA9F769B1A97:3} JMSDestination = {隊列[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 = {[email protected]}}

[2012年7月11日11:39: 46] DEBUG [](JmsTemplate.java:464) - 在JMS會話上執行 回調:com.tibco.tibjms.T ibjmsSession @ 16c143

[2012年07月11 11點39分46秒] DEBUG [](JmsConfiguration.java:266) - 發送 JMS消息:隊列[f2b.prototype.tracer.queue]與消息: ObjectMessage = {Header = {JMSMessageID = {null} JMSDestination = {null} JMSExpiration = {null} JMSExource = {null} JMSExeli = {null} JMSDeliveryMode = {PERSISTENT} JMSRedelivered = {false} 0} JMSPriority = {4}}屬性= {} Object={[email protected]}}

測試

[2012年7月11日11:39:52] DEBUG [] (AbstractPollingMessageListenerContainer。來自消費者 [QueueReceiver [queue = f2b.prototype.tracer.queue]]的類型爲[class com.tibco.tibjms.TibjmsObjectMessage]的收到消息 [0124] [0126] [0146] [0145] [[email protected] ]

[2012年07月11 11點39分52秒] DEBUG [](EndpointMessageListener.java:72) - 端點[jmsTrace://隊列:/ user_dev /分貝/ US/GTO/CIFramework/S001DEV/F2B。 prototype.tracer.queue:隊列] 消費者接收JMS消息:ObjectMessage = {標題= { JMSMessageID按= {ID:db_us_GTO_CIFramework_S001DEV.20D84FDA9F769B1A97:4} JMSDestination = {隊列[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年07月11十一時39分52秒] DEBUG [](JmsTemplate.java:464) - 執行對JMS會話 回調:com.tibco.tibjms。 TibjmsSession @ 16c143

[2012年07月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}} Properties = {} Object = [email protected]}}

回答

0

我知道我在做一些愚蠢的事!

我仔細看了看跟蹤消息,發現在我的上下文中啓用了跟蹤,導致我的跟蹤器路由被跟蹤,因此是一個很好的小無限循環。