首页 > 解决方案 > 如何解决读取 MQ 消息导致提交/回滚错误的问题?

问题描述

在努力让 MQ 连接在 Liberty 中工作时,我遇到了以下问题。

收到消息后,出现以下错误: JMSCC0014: 在非事务会话上调用“提交”方法无效。

我做了一些搜索,发现需要使用连接工厂的 XA 版本,但我不知道这是否确实是解决方案,我还没有找到任何明确的例子来说明如何在配置中实现它我有。

这是 server.xml 配置的相关部分:

<resourceAdapter id="mqJms" location="/etc/liberty/wmq/wmq.jmsra.rar"/>
<authData id="mqJms.auth" user="user" password="password"/>

<jmsQueueConnectionFactory jndiName="jms/queueConnectionFactory" connectionManagerRef="ConMgr4" containerAuthDataRef="mqJms.auth">
    <properties.mqJms transportType="CLIENT"
    hostName="server" port="1234"
    channel="CHANNEL"/>
</jmsQueueConnectionFactory>

<connectionManager id="ConMgr4"
    connectionTimeout="30s"
    maxPoolSize="50" minPoolSize="1"
    reapTime="60s" agedTimeout="0"/>

<jmsQueue id="jms/incomingRequestQueue" jndiName="jms/incomingRequestQueue">
    <properties.mqJms baseQueueName="QUEUEIN"/>
</jmsQueue>

queueConnectionFactory 是通过代码中的 JNDI 检索的。

任何帮助将不胜感激。

标签: javawebsphere-libertyopen-liberty

解决方案


解决方案最终是在收到 MQ 消息后不执行提交/回滚,有关更多信息,请参见此处:Websphere Liberty:JMS 会话不起作用


推荐阅读