簡體   English   中英

如何使用 ActiveMQ 添加 JNDI 目標(主題和隊列)?

[英]How to add JNDI destinations (Topics and Queues) with ActiveMQ?

我不想使用jdni.properties文件,因此要將新屬性添加到我的 JNDI 設置中,我寫了以下內容:

    Hashtable<String, Object> jndi_env = new Hashtable<String, Object>();
    jndi_env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
    jndi_env.put("connectionFactory.ConnectionFactory","vm://0");
    jndi_env.put("topic.example","example");

我的問題是,當我調用這個 class 時:

initialContext = new InitialContext(jndi_env);

由於我在最后一行傳遞了一個名稱參數,因此查找了 URL 上下文工廠。

這使我的代碼尋找我實際上不想要的tcp://localhost:61616連接。

我看到有

QueueConnectionFactory: org.apache.activemq.ActiveMQConnectionFactory
example: org.apache.activemq.command.ActiveMQTopic
XAConnectionFactory: org.apache.activemq.ActiveMQXAConnectionFactory

我不想要,或者至少不是他們的類型。

如果我使用我的jndi.properties文件檢查而不傳遞參數,而我沒有遇到建立 tcp 連接的問題,那么我發現只是:

ConnectionFactory: org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory
queue: org.apache.activemq.artemis.jndi.ReadOnlyContext
queue/exampleQueue: org.apache.activemq.artemis.jms.client.ActiveMQQueue
dynamicTopics: org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory$2
dynamicQueues: org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory$1

那么如何更改我添加的jndi_env.put("topic.example","example");的 object 類型所以它會是這樣的(但當然是主題)

queue: org.apache.activemq.artemis.jndi.ReadOnlyContext
queue/exampleQueue: org.apache.activemq.artemis.jms.client.ActiveMQQueue

創建InitialContext時,您傳入了錯誤的工廠。 目前您正在傳遞org.apache.activemq.jndi.ActiveMQInitialContextFactory 這是 ActiveMQ 5.x 的工廠,而不是 Artemis。 您需要傳入org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory代替,例如:

Hashtable<String, Object> jndi_env = new Hashtable<String, Object>();
jndi_env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory");
jndi_env.put("connectionFactory.ConnectionFactory","vm://0");
jndi_env.put("topic.example","example");

暫無
暫無

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

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