我正在嘗試配置 TomEE(帶有 Java EE 的 Tomcat)以使用 AMQP 有線協(xié)議連接到外部代理(Azure 服務總線)??雌饋砟J情況下 JMS 提供程序是 ActiveMQ。根據文檔,ActiveMQ 確實支持 AMQP 協(xié)議。我的目標是使用 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 協(xié)議與 ActiveMQ 代理對話,以使用 AMQP 連接到 Azure 服務總線。這是行不通的,而且從來沒有設計成可以工作。
您需要使用可以使用 AMQP 的 JCA 資源適配器(即不是 ActiveMQ JCA RA)。也許看看這個通用的 JMS JCA 資源適配器。它被設計用于 JBoss AS 或 Wildfly,但不應該有任何東西妨礙它在 TomEE 中的使用。然后,您可以將Qpid JMS作為客戶端插入其中。您可以在此處查看執(zhí)行此操作的另一個組件的示例。
添加回答
舉報
0/150
提交
取消