将消息发送到使用camel创建的activemq队列

时间:2015-03-09 13:53:26

标签: activemq jndi

我是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上公开这个队列吗? 感谢您的回复。

1 个答案:

答案 0 :(得分:0)

将PROVIDER_URL中的localhost更改为machineName。 由于它是远程操作,因此需要您的机器名称。