消息不会从安慰队列中消耗掉

时间:2017-06-20 14:49:40

标签: java spring-integration solace-mq

我使用spring integration int-jms:message-driven-channel-adapter来消耗来自安慰队列的消息。

我在服务器日志中看到下面提到的错误

org.springframework.jms.listener.DefaultMessageListenerContainer- Execution of JMS message listener failed, and no ErrorHandler has been set.
javax.jms.TransactionRolledBackException: Error comitting - transaction rolled back (Transaction '12427' unexpectedly rolled back during commit attempt. (((Client name: xxxx.yyyy.com/7034/#0002000a   Local addr: 123123  Remote addr: aaa.bbb.com:12345) - )  com.solacesystems.jcsmp.JCSMPErrorResponseException: 503: Message Consume Failure [Subcode:48]))

JMS配置如下所述

<int-jms:message-driven-channel-adapter
        id="IdMessageDrivenChannelAdapter" send-timeout="5000"
        max-messages-per-task="-1"
        idle-task-execution-limit="100"
        max-concurrent-consumers="2"
        connection-factory="appCachedConnectionFactory" destination="appInQueue"
        channel="reqChannel" error-channel="errorChannel"
        acknowledge="transacted" />

任何解决此错误的指针都会非常有用。

1 个答案:

答案 0 :(得分:1)

错误表示在事务期间无法使用消息。错误的原因可能是许多不同的问题,例如消息被删除/过期,或者队列未找到或关闭。

您可以分析其余的API日志或Solace路由器上的事件日志,以找出无法使用该消息的原因。

您在评论中链接的子代码文档是指Solace .NET API。要查看错误及其子代码列表以及JCSMP错误的说明,请参阅此处的文档: http://docs.solace.com/API-Developer-Online-Ref-Documentation/java/constant-values.html