[英]How can one use activemq not locally?
我無法理解如何在本地使用ActiveMQ。
假設我有2台機器,需要交換一些消息。
在機器上我啟動ActiveMQ代理:
> ~/bin/activemq
並使用類似的東西:
javax.naming.Context ctx = new InitialContext();
TopicConnectionFactory factory = (TopicConnectionFactory)ctx.lookup("connectionFactory");
conn = factory.createTopicConnection();
TopicSession session = conn.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE);
Topic topic = null;
try{
topic = (Topic)ctx.lookup("MyTopic");
System.out.println("MyTopic was found");
}catch(NameNotFoundException nnfe){
topic = session.createTopic("MyTopic");
System.out.println("MyTopic was created");
}
TextMessage textMessage = session.createTextMessage();
TopicPublisher publisher = session.createPublisher(topic);
conn.start();
textMessage.setText("My topic message number");
publisher.publish(textMessage);
System.out.println("sendMessage2topic");
我在jndi.properties中的位置:
java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = tcp://localhost:61616
但是我應該在另一台機器上創建什么來訂閱這個主題? Shoul我在第二台機器上創建第二個本地ActiveMQ代理,以及如何訂閱第一台機器上的遠程主題???
localhost:61616只會使activeMQ偵聽環回(127.0.0.1)接口。 使用機器的IP或0.0.0.0代替。
這條線......
java.naming.provider.url = tcp://localhost:61616
...告訴你的connectionFactory
連接loopback接口。 您可以在此處指定遠程代理的地址。
在這種情況下,您的代碼段將向遠程代理發送消息。 現在,經紀人需要通過已注冊的訂戶(本地和遠程訂戶)分發消息。
在這種情況下, 不會創建任何代理 (本地或遠程)。 您只需連接到現有代理。 當然,您也可以創建本地代理並將其配置為將消息路由到遠程代理(例如,您可以通過靜態/動態網絡傳輸或對等網絡傳輸協議來執行此操作)。 ActiveMQ為您提供了許多集成拓撲和模式 - 但首先您必須定義實際要實現的內容。
你需要使用類似下面的東西。 用你想要使用的目標ip替換ipaddress
java.naming.provider.url = tcp://172.16.202.168:61616
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.