以前は OpenMQ を JMS プロバイダーとして使用していた Java サービス プログラムに取り組んでいますが、activemq-artemis を使用するように変換しています。
アルテミスから既存のトピック/キューのリストを取得する必要があります。これまでのところ、artemis に付属のサンプルと、Web で見つけた他のコード サンプルを組み合わせて開発した以下のコードがあります (try/catch アウトは省略します)。
TransportConfiguration tportConfig = new TransportConfiguration(NettyConnectorFactory.class.getName());
QueueConnectionFactory qcf = (QueueConnectionFactory) ActiveMQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.QUEUE_CF, tportConfig);
QueueConnection qConn = qcf.createQueueConnection();
QueueSession session = qConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
javax.jms.Queue managementQueue = ActiveMQJMSClient.createQueue("activemq.management");
QueueRequestor requestor = new QueueRequestor(session, managementQueue);
qConn.start();
Message mgtMsg = session.createMessage();
JMSManagementHelper.putAttribute(mgtMsg, org.apache.activemq.artemis.api.core.management.ResourceNames.JMS_SERVER, "topicNames");
Message reply = requestor.request(mgtMsg);
デバッガーで各行をステップ実行すると、最後の requestor.request() メソッド呼び出しまで、コードが機能することがわかります。これが呼び出された後、スレッドのブラック ホールのようです。デバッガーは次の行に到達せず、catch ブロックは開始されず、artemis.log にはどのタイプのエラーも記録されません。putAttribute 呼び出しで文字列 queueNames を使用すると、同じ結果が得られます。
私のコードに問題がありますか、それとも何が起こっているのかについて誰かが私に洞察を与えることができますか?
追加の詳細: artemis サーバー 2.1.0 とクライアント コードは単一の開発マシン JDK7u65 でローカルに実行されており、テスト コードはこのプロジェクトの外部にあり、artemis との間で簡単なメッセージを発行および使用できます。
ありがとう。