2016-01-13 77 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统计数据,对于其他队列都是相同的值。 –

相关问题