2

我正在使用动态队列进行测试,名称为 dynamicQueues/Foo,但在 Web 控制台中,我看到队列名称为 dynamicQueues/Foo 而不仅仅是 Foo。

其他代码(不是我们的)使用相同的 dynamicQueues/Foo 但控制台上的队列名称只是 Foo 所以可以说事情是错位的。

我已按照此处的说明进行操作:http: //activemq.apache.org/jndi-support.html

我对 Web 控制台中报告的队列名称是否应该包含 dynamicQueues 感到困惑——因此很难调试我们的问题。

4

2 回答 2

4

您应该在控制台窗口中看到 Foo ,是的。

此代码将在FOO上生成一条消息,并在 Web 控制台(amq 5.6.0)中将队列显示为 FOO:

Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.apache.activemq.jndi.ActiveMQInitialContextFactory");
props.setProperty(Context.PROVIDER_URL,"tcp://127.0.0.1:61616");
javax.naming.Context ctx = new InitialContext(props);
ConnectionFactory cf = (ConnectionFactory)ctx.lookup("ConnectionFactory");
Connection conn = cf.createConnection();
Destination dest = (Destination)ctx.lookup("dynamicQueues/FOO");
Session s = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer prod = s.createProducer(dest);
prod.send(s.createTextMessage("Hello, World!"));

您确定您使用 JNDI 来查找队列并且您没有在 jndi.properties 中配置任何内容吗?

于 2012-07-30T23:11:12.730 回答
0

(我无法回复上面的评论,很抱歉在这里回答。)

这是我的问题(在 scala 中):

这有效,队列称为 FOO
val destination = JmsConnectionFactory.initialContext.lookup("dynamicQueues/FOO").asInstanceOf[Destination]
val consumer = session.createConsumer(destination)

这不,队列被称为 dynamicQueues/FOO
val queue = session.createQueue("dynamicQueues/FOO")
val consumer = session.createConsumer(queue)

叹息,我想这是有道理的。

于 2012-07-31T13:24:18.810 回答