【问题标题】:Artemis ActiveMQ - AMQ159005: Invalid Session Mode CLIENT_ACKNOWLEDGEArtemis ActiveMQ - AMQ159005:无效的会话模式 CLIENT_ACKNOWLEDGE
【发布时间】:2018-08-28 22:12:58
【问题描述】:

我正在尝试使用确认模式 CLIENT 创建会话并遇到以下异常:

JMSException: Could not create a session: AMQ159005: Invalid Session Mode CLIENT_ACKNOWLEDGE

代码:

import javax.jms.Connection;
import javax.jms.Session;
import javax.jms.ConnectionFactory;

ConnectionFactory factory = (ConnectionFactory) initialContext.lookup("java:/RemoteJmsDispatcher");

private Connection conn;
conn = factory.createConnection();

private Session session;
session = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);

RemoteJmsDispatcher:

 <pooled-connection-factory name="activemq-ra-remote-dispatcher" entries="java:/RemoteJmsDispatcher java:jboss/exported/jms/ConnectionFactory" connectors="netty-remote-dispatcher" min-large-message-size="524288" client-id="wildfly-dev" retry-interval="5000" max-retry-interval="5000" group-id="my-broadcast-group" user="xxxxx" password="xxxxx" enlistment-trace="true">
     <inbound-config use-jndi="true" rebalance-connections="true" use-local-tx="false"/>
 </pooled-connection-factory>

我用谷歌搜索错误代码 AMQ159005 并没有找到任何东西。

我需要使用此模式进行创建,因为我处理的消息较多,如果出现异常,我需要将消息返回到队列。

提前致谢。

【问题讨论】:

  • 您在什么情况下尝试创建此会话?您在 Java EE 应用程序服务器中吗?您是否从基于 JCA 的连接工厂创建的连接创建会话?
  • 您好贾斯汀,感谢您的回复。是的,我正在使用 JBoss Wildfly 13。我正在使用 Remote ConncetionFactory 来创建我的连接。我将代码添加到问题中。
  • 您在 EJB 中吗?服务器配置中如何定义“java:/RemoteJmsDispatcher”?
  • 已添加到问题中。关于 EJB 我不确定。我怎样才能确认这一点?谢谢。
  • 该类(或链上的调用者之一)可能会使用 @Stateless 进行注释,或者使用 ejb-jar.xml 文件打包在部署中。

标签: jms activemq-artemis


【解决方案1】:

pooled-connection-factory 是一个基于 JCA 的连接工厂(来自 Artemis JCA 资源适配器),它不允许在会话中设置 CLIENT_ACKNOWLEDGE 模式。见here。我建议您使用普通(即非基于 JCA)的连接工厂。

【讨论】:

  • 好的。知道了。我将检查是否可以在 Wildfly 上创建一个非池连接工厂并使用它。我明白了这个问题。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
相关资源
最近更新 更多