簡體   English   中英

使用activemq-client jar和activemq-all jar的問題

[英]Problems using activemq-client jar vs activemq-all jar

我需要使用activemq-client而不是匯總activemq-all JAR文件,因為匯總全部包含我們使用的其他庫的不同版本。

我正在使用maven來管理依賴項,客戶端jar會插入:

  • activemq客戶端(5.15.8)
  • slf4j-api 1.7.25
  • geronimo-jms_1.1_spec(1.1.1)
  • hawtbuf(1.11)
  • geronimo-j2ee-management_1.1_spec(1.0.1)

全部jar只是activemq-all(5.15.8)

使用此代碼,通過activemq-all jar,我可以連接並開始接收消息。 createConnection()調用中,我收到一條日志消息“成功連接到...”

使用activemq-client jar,它掛在createSession()調用上(並輸出“ 10次嘗試后失敗,將繼續嘗試”的消息)。 沒有收到“成功連接到...”消息。

ConnectionFactory factory = new ActiveMQConnectionFactory(user, pass, url);
Connection AMQconn =  factory.createConnection();
Session AMQsess =  AMQconn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = AMQsess.createQueue(queueName);
MessageConsumer AMQconsumer = AMQsess.createConsumer(queue);

我以為我在某處缺少依賴項,但是我沒有找到no class def found異常等。

(我還使用了activemq版本5.15.9,但我們的服務器是5.15.8,因此請堅持使用)。

更大的圖景(為什么客戶端jar與匯總jar):我需要在相同的過程中連接到hornetQ和AMQ,並且分解單個jar是我嘗試解決的問題。罐子)

該問題省略了URI,但是注釋似乎表明用戶正在嘗試通過以下形式的URI進行連接: auto://localhost:61616 鑒於自動傳輸在客戶端上沒有意義,因此這將是問題,因為這意味着在代理端自動檢測連接的客戶端正在使用什么協議並自動切換到該協議。 自動傳輸允許代理在客戶端將連接到的單個開放端口上支持多種協議。

ActiveMQ JMS客戶端必須始終使用Openwire協議(這就是它的作用),因此客戶端的URI的格式應為tcp://ssl://failover://等。

如果您包含ActiveMQ代理jar,它將提供一些特殊的便利類,它們將僅映射URI,這些URI包括在客戶端中沒有意義的方案,例如nionio + sslauto,但它們不僅包含在客戶端中jar,因為它們實際上不屬於該容器,因為它們不適合在客戶端使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM