1

amqpエンドポイントの「参照」オプション(セクション2.4.3.3を参照。詳細を参照)のようなものはありますか?

4

3 に答える 3

1

「閲覧」コンポーネントがあります。to("browse:dummy")、ただし、このルートを通過したメッセージを参照することのみが可能になります。場合によっては便利ですが、JMSブラウズオプションとしては実際にはそうではありません。

できることは、を使用BrowsableEndpointしてJMSブラウズを実行することです(AMQPはJMSクライアントに基づいているため、AMQPでも機能するはずですが、試していません)。

ただし、実際にメッセージを受信して​​削除することはできないため、ブラウジングをトリガーするには別の何かが必要になります。タイマーやトリガーキューなど。

from("amqp:queue:trigger")
        .process(new Processor(){
            @Override
            public void process(Exchange arg0) throws Exception {
                    BrowsableEndpoint browse = arg0.getContext().getEndpoint("amqp:queue:archive", BrowsableEndpoint.class);
                    List<Exchange> exchanges = browse.getExchanges();
                    System.out.println("Browsing queue: "+ browse.getEndpointUri() + " size: " + exchanges.size());
                    for (Exchange exchange : exchanges) {
                        String payload = exchange.getIn().getBody(String.class);
                        String msgId = exchange.getIn().getHeader("JMSMessageID", String.class);
                        System.out.println(msgId + "=" +payload);
                    }
               }
        });

このトリガーを達成するために、事前ルートを実行できます。

from("amqp:queue:processQueue")
   .to("amqp:queue:archive")
   .transform().constant("trigger msg")
   .to("amqp:queue:trigger");
于 2013-01-26T09:33:16.943 に答える
1

私は最終的にそれを理解しました、私はちょうどオプションがラクダコンポーネントオプションレベルにあるべきだと思いました、すなわち例えば「?mode =ブラウズ」の形の接続文字列の後、しかしオプションは実際にはamqp接続レベルに設定されるべきです-" my-queue; {モード:参照}"。「?option=value」を追加してラクダのコンポーネントオプションを設定できます。

PS amqp接続レベルでオプションを設定すると、偶数駆動(デフォルトのラクダ)ルーティングでは機能しますが、ポーリング駆動ルーティングでは機能しません。詳細については、https://issues.apache.org/jira/browse/CAMEL-6784を参照してください

于 2013-10-09T12:49:47.663 に答える
0

はい。AMQP 0-10では、message.subscribeに取得モードオプションがあり、非取得に設定するとブラウジングサブスクリプションになります。AMQP1.0では、サブスクライバーを確立するときにソースに「コピー」の配布モードを指定することで同じことが実現されます。リンク。

ただし、JMSクライアントを介してAMQPにアクセスしていると仮定すると、Petterが上記で述べているように、私が想像するJMSで定義されているブラウジング機能を使用できるはずです(ラクダに精通していないため、その方法を理解できません)。

于 2013-01-23T10:15:39.473 に答える