2

dynamicQueues/Foo などの名前でテストに動的キューを使用していますが、Web コンソールではキュー名が Foo ではなく dynamicQueues/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 に答える