![](/img/trans.png)
[英]How to retrieve created Topics (and Queues) of session with ActiveMQ 5.x
[英]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.