1

プログラム以外の方法で、activemq にエンキューされたトピック メッセージを読み取ろうとしています。(デバッグ用)

activemq admin webapp から、トピックを投稿できますが、投稿したメッセージを読むことができます (これはキューの場合ではありません)。

別の jms クライアント (hermes) を使用しようとしましたが、同じ問題があります。トピック メッセージがクライアントによってリストされていません。

私はAMQに非常に慣れていないので、おそらく完全に混乱しています...誰かが助けてくれますか?

どうもありがとう!

4

1 に答える 1

2

ActiveMQ コンソールは、メッセージをトピックにパブリッシュすることはできますが、サブスクライブすることはできません。

Hermes ではこれが機能しますが、Hermes はサブスクライブ後にトピックに送信されたメッセージを受信するため、メッセージがトピックに送信される前にトピックの閲覧を開始する必要があることに注意してください。これは、サブスクリプションが機能する通常の方法です。

Hermes でトピックを耐久性に指定し、接続に clientId を設定することで、耐久性のあるサブスクライバーをセットアップできるため、最後のことは実際には完全に真実ではありません。トピックに関するメッセージを「参照」することはできず、特定のサブスクライバーへのメッセージを取得するだけであるため、メッセージが送信される前にこのコンシューマーを登録する必要があります。

デバッグ用のもう 1 つの方法は、Activemq で camel.xml ファイルを編集し、盗聴ルートを追加することです。

<route>
  <from uri="activemq:topic:mytopic"/>
  <to uri="activemq:queue:myqueue"/>
</route>

次に、発行された各メッセージのコピーが「myqueue」キューにあるはずです。これは、コンソールで読み取ることができるはずです。

于 2012-12-20T11:40:12.987 に答える