为了账号安全,请及时绑定邮箱和手机立即绑定

TomEE: JMS Provider - ActiveMQ with AMQP Wire 协议

TomEE: JMS Provider - ActiveMQ with AMQP Wire 协议

慕容708150 2022-12-28 16:36:12
我正在尝试配置 TomEE(带有 Java EE 的 Tomcat)以使用 AMQP 有线协议连接到外部代理(Azure 服务总线)。看起来默认情况下 JMS 提供程序是 ActiveMQ。根据文档,ActiveMQ 确实支持 AMQP 协议。我的目标是使用 ActiveMQ 作为 TomEE 提供的 JMS 提供程序。但是,当我部署我的基本 ear 文件时,出现以下错误:03-Jun-2019 16:43:19.629 WARNING [http-nio-8080-exec-1] org.apache.geronimo.transaction.manager.TransactionImpl.enlistResource Unable to enlist XAResource org.apache.geronimo.transaction.manager.WrapperNamedXAResource@117d2011, errorCode: -7 javax.transaction.xa.XAException: Disposed due to prior exception    at org.apache.activemq.TransactionContext.toXAException(TransactionContext.java:803)    at org.apache.activemq.TransactionContext.setXid(TransactionContext.java:729)    at org.apache.activemq.TransactionContext.start(TransactionContext.java:379)    at org.apache.activemq.ra.LocalAndXATransaction.start(LocalAndXATransaction.java:151)    at org.apache.geronimo.transaction.manager.WrapperNamedXAResource.start(WrapperNamedXAResource.java:111)    at org.apache.geronimo.transaction.manager.TransactionImpl.enlistResource(TransactionImpl.java:209)    at org.apache.geronimo.connector.outbound.TransactionEnlistingInterceptor.getConnection(TransactionEnlistingInterceptor.java:60)    at org.apache.geronimo.connector.outbound.TransactionCachingInterceptor.getConnection(TransactionCachingInterceptor.java:101)    at org.apache.geronimo.connector.outbound.ConnectionHandleInterceptor.getConnection(ConnectionHandleInterceptor.java:43)[....]有没有人将 ActiveMQ 与 AMQP 一起使用?或者为了奖励积分,有人让它与 Azure 服务总线一起工作吗?我确实从 github 尝试了 Azure JMS 快速启动:(https://github.com/Azure/azure-service-bus/tree/master/samples/Java/qpid-jms-client/JmsQueueQuickstart)并且它正在工作,所以我确信服务总线已启动并正在运行。但是,我无法在 TomEE 中部署 JMS 应用程序。任何帮助将不胜感激。更新:我正在使用 Justin Bertram 建议的 AMPQ 资源适配器:https ://github.com/amqphub/amqp-10-resource-adapter
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

我认为你混淆了经纪人和客户。我已经将 ActiveMQ 与 AMQP 一起使用,但它是一个连接到 ActiveMQ 代理的 AMQP 客户端。您正在尝试使用 ActiveMQ JCA 资源适配器,它旨在通过 OpenWire 协议与 ActiveMQ 代理对话,以使用 AMQP 连接到 Azure 服务总线。这是行不通的,而且从来没有设计成可以工作。

您需要使用可以使用 AMQP 的 JCA 资源适配器(即不是 ActiveMQ JCA RA)。也许看看这个通用的 JMS JCA 资源适配器。它被设计用于 JBoss AS 或 Wildfly,但不应该有任何东西妨碍它在 TomEE 中的使用。然后,您可以将Qpid JMS作为客户端插入其中。您可以在此处查看执行此操作的另一个组件的示例。


查看完整回答
反对 回复 2022-12-28
  • 1 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信