検索

256.6. サンプル

download PDF

ルーティングキー B でエクスチェンジ A にバインドされているキューからメッセージを受信するには、以下を行います。

from("rabbitmq:A?routingKey=B")

自動確認が無効になっている単一のスレッドでキューからメッセージを受信するには、以下を行います。

from("rabbitmq:A?routingKey=B&threadPoolSize=1&autoAck=false")

C と呼ばれるエクスチェンジにメッセージを送信するには、以下を行います。

to("rabbitmq:C")

ヘッダーエクスチェンジおよびキューの宣言

from("rabbitmq:ex?exchangeType=headers&queue=q&bindingArgs=#bindArgs")

また、対応する Map<String, Object& gt; をレジストリーの「bindArgs」の ID に置き換えます。

spring でメソッドを宣言する例

@Bean(name="bindArgs")
public Map<String, Object> bindArgsBuilder() {
    return Collections.singletonMap("foo", "bar");
}

256.6.1. エクスチェンジ間でルーティングする問題(Camel 2.20.x 以前)

たとえば、以下の例のように、ある Rabbit のエクスチェンジから別のエクスチェンジにメッセージをルーティングする場合は、foo bar を使用します。

from("rabbitmq:foo")
  .to("rabbitmq:bar")

その後、Camel はメッセージを自身(例: foo foo)にルーティングすることに注意してください。なぜそこになのでしょうか?これは、メッセージを受信するコンシューマー(例: from)により、エクスチェンジの名前(例: foo )を持つメッセージヘッダー rabbitmq.EXCHANGE_NAME が提供されるためです。また、Camel プロデューサーがメッセージを バー に送信すると、ヘッダー rabbitmq.EXCHANGE_NAME はこれを上書きし、代わりにメッセージを foo に送信します。

これを回避するには、以下のいずれかを実行する必要があります。

  • ヘッダーを削除します。
from("rabbitmq:foo")
  .removeHeader("rabbitmq.EXCHANGE_NAME")
  .to("rabbitmq:bar")
  • または、プロデューサーで bridgeEndpoint モードをオンにします。
from("rabbitmq:foo")
  .to("rabbitmq:bar?bridgeEndpoint=true")

Camel 2.21 以降では改善され、エクスチェンジ間の簡単にルーティングできるようになりました。ヘッダー rabbitmq.EXCHANGE_NAME は、宛先の交換を上書きするプロデューサーで使用されなくなりました。代わりに、新しいヘッダー rabbitmq.EXCHANGE_OVERRIDE_NAME を使用して、別のエクスチェンジに送信することができます。たとえば、エクスチェンジの検証に送信するには、以下を実行できます。

from("rabbitmq:foo")
  .setHeader("rabbitmq.EXCHANGE_OVERRIDE_NAME", constant("cheese"))
  .to("rabbitmq:bar")
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.