2016-01-13 75 views
0

我們正在使用彈簧集成和日誌,我們可以在堆棧跟蹤下面看到日誌。適配器工作正常其他JMS,我們認爲只有下面一個是失去了一些東西:消息驅動通道適配器:輪詢來自隊列的假/幻像消息

Spring的集成配置:

<jms:message-driven-channel-adapter concurrent-consumers="1" id="jmsInLOAN" destination="queueLOAN" channel="LOANCommonDataChannel" acknowledge="transacted" /> 

請從下面放MQ統計和郵件閱讀次數,應該有信息的準確計數通過適配器讀取。我很擔心spring集成的消息驅動通道適配器從隊列中讀取額外的消息。任何幫助,將不勝感激。

enter image description here

WARN 07/Jan/2016 09:04:15,438 [org.springframework.jms.listener.DefaultMessageListenerContainer#23-1] springframework.jms.listener.DefaultMessageListenerContainer - [SYSTEM_ID=HBUSLOANIQ] [MESSAGE_ID=null] Execution of JMS message listener failed, and no ErrorHandler has been set. 
org.springframework.integration.MessagingException: unsupported payload type [com.ibm.jms.JMSMessage] 
     at org.springframework.integration.xml.DefaultXmlPayloadConverter.convertToDocument(DefaultXmlPayloadConverter.java:76) 
     at org.springframework.integration.xml.DefaultXmlPayloadConverter.convertToNode(DefaultXmlPayloadConverter.java:88) 
     at org.springframework.integration.xml.router.XPathRouter.getChannelIdentifiers(XPathRouter.java:119) 
     at org.springframework.integration.router.AbstractMessageRouter.determineTargetChannels(AbstractMessageRouter.java:247) 
     at org.springframework.integration.router.AbstractMessageRouter.handleMessageInternal(AbstractMessageRouter.java:211) 

回答

0

這個問題是因爲我們正在進入隊列的有效和有毒(它有一個有效載荷類型[com.ibm.jms.JMSMessage])消息。有效的消息處理得很好,但是富含消息的消息不能被應用程序消化併發送到BackoutQueue。

在我們的例子中,BOQ閾值是3,這意味着我的應用程序將嘗試消耗一個特定消息的3次,如果消息退出3次,那麼它將被移動到BOQ隊列和(msgs read - msgs put)/ 3在LOAIQ ==上,這個信號以這個採樣間隔放在BOQ隊列中。從放在BOQ隊列上的消息中,我們可以看到有多少消息從LOAIQ隊列中退出。這就是爲什麼消息讀取次數超過接收到的消息數量的原因。 enter image description here

0

看起來你是路過未轉化的JMS消息(com.ibm.jms.JMSMessage)的XML負載轉換器...

org.springframework.integration.MessagingException: unsupported payload type [com.ibm.jms.JMSMessage] 
    at org.springframework.integration.xml.DefaultXmlPayloadConverter.convertToDocument(DefaultXmlPayloadConverter.java:76) 

也許你已經設置extract-payloadfalse

雖然它不在您顯示的配置中。

打開DEBUG日誌將顯示消息通過系統的有效載荷類型。

+0

這發生在現場環境,因此無法檢查。儘管隊列中收到的所有消息都可以正常處理。 根據我們的** xpath-router **和extract-payload在我們的情況下(默認情況下)爲真 –

+0

我不知道你是如何到達這些統計數據的,但它們對我沒有任何意義。你不能從隊列中讀取更多的消息(除非有異常/回滾 - 但由於我不知道數據的來源,所以我不能推測)。底線是你以某種方式向xpath路由器發送了未轉換的消息。您需要非常仔細地查看您的配置,但我擔心您唯一的選擇是啓用DEBUG日誌記錄 - 這非常不可能是偵聽器容器/消息驅動適配器中的錯誤。 –

+0

我們從IBM mq團隊獲得的MQ統計數據,對於其他隊列都是相同的值。 –

相關問題