我是activeMQ的新手,我有问题将消息从驻留在另一台服务器上的消息生成器推送到activeMQ定义的队列。
我在使用camel路由在activeMQ上创建的应用程序中有几个队列。我试图从另一台服务器上的应用程序对这些队列执行远程JNDI查找。我使用了http://activemq.apache.org/jndi-support.html页面的activemq文档中的代码段。
我可以连接到activeMQ,但我无法查找使用camel路由定义的队列。
队列使用者是通过下面定义的camel路由创建的。 从(" JMS:队列:APP.IF.JMS.OUTBOUND&#34) .... //这条路线做了一些处理。
但是我没有在查找中看到此队列,如下所示 -
String destination = "APP.IF.JMS.OUTBOUND";
ConnectionFactory cf = null;
Destination dest = null;
Context ctx = null;
Properties params = new Properties();
readProperty(params, Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory", false);
readProperty(params, Context.PROVIDER_URL, "tcp://localhost:61616", false);
readProperty(params, "queue.AS.IF.JMS.REQUEST",
"AS.IF.JMS.REQUEST", false);
ctx = new InitialContext(params);
cf = (ConnectionFactory) ctx.lookup("ConnectionFactory");
System.out.println(ctx.getEnvironment());
dest = (Destination) ctx.lookup(destination);
..............
在此队列上执行查找时,最后一行失败。我确实在控制台上看到了这一点。我错过了一些配置来在JNDI上公开这个队列吗? 感谢您的回复。
答案 0 :(得分:0)
将PROVIDER_URL中的localhost更改为machineName。 由于它是远程操作,因此需要您的机器名称。