我使用动态队列进行测试,例如dynamicQueues / Foo,但在Web控制台中,我看到队列名称为dynamicQueues / Foo,而不仅仅是Foo。
其他代码(不是我们的代码)使用相同的dynamicQueues / Foo,但控制台上的队列名称只是Foo,因此事情可能会错位。
我已按照此处的说明操作:http://activemq.apache.org/jndi-support.html
我对Web控制台中报告的队列名称是否应包含dynamicQueues感到困惑 - 因此很难调试我们的问题。
答案 0 :(得分:3)
你应该在控制台窗口看到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中配置任何内容吗?
答案 1 :(得分: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)