Apache Camel のプロデューサーとコンシューマー
-
22-09-2019 - |
質問
コンセプトを理解するのが難しいです。
TCP ポートで独自形式の受信メッセージをリッスンするエンドポイントを実装しようとしています。これにより、メッセージが変換され、camel が転送とルーティングを引き継ぎます。
プロデューサーはメッセージを Endpoint
そしてその Consumer
そのエンドポイントからそれらを受信しますか?
インターフェイスを研究しているとき、特にコンシューマー部分で、これらのオブジェクト間のメッセージ フローを理解できませんでした。 Consumer
定義するだけ start()
そして stop()
方法...
スケルトン実装でテストを設定する場合、 Camel
呼び出された createProducer()
エンドポイント上と process()
プロデューサーオブジェクトについて。その後、コンシューマまたはそれに関連付けられたプロセッサに対して何も行わずに戻りました。
誰かが私に正しい方向を教えてくれませんか?
解決 2
Iついにストリームコンポーネントを見て、それを考え出します。
私はすべてが行かなければならないスルー中央何かのようにエンドポイントを考えてのミスを犯したことが判明します。
は、単純な答えは、消費者が(私の場合はサーバソケットでリスン)外部システムからのデータを受信することであるとプロデューサーは、外部システムにデータを送信します。
システムがまだ設定ミスのためにそれを行うにしようとすると、私のエンドポイントが(それはキャメルルーティングプロセスの最終目的地として使用されません)読み取り専用であるので、私は本当にプロデューサーを必要としない(それはのRuntimeExceptionをスローする必要があります)。フィッティングの例は以下のようになりラクダ原子エンドポイント - 。あなたはフィードを読むことができるが、(1.6.0のように)あなたが1を公開することはできません。
同様に、あなただけの外部システム(例えばログ)からのデータを受信しない書き込み専用エンドポイントのプロデューサーを必要とします。
他のヒント
覚えておくことが重要です。 Endpoint
, によって作成されました。 Component
(すなわち、Endpoint Factory)、次の場所に設置できます。 どちらか ラクダの終わり Route
. 。を置くと 成分 ルートの開始時に、 Consumer
の一部 成分. 。これは、特定の入力/リクエスト (HTTP リクエストなど) を一般的なもの (Camel) に変換する作業を行います。 Exchange
- それは下に移動することができます ルート. 。一方、 成分 の終わりに ルート の実装が必要です Producer
. 。の プロデューサー を取る仕事をします 交換 の終わりから ルート そしてそれを特定のもの (JMS メッセージなど) に変換します。
Fuse ESB のドキュメントは (一般的に) ドキュメントよりも優れていると思います。 Apache Camel Web サイト. 。から ヒューズ ESB コンポーネント ページ:
消費者エンドポイント リクエストを消費します。それらは常に最初に表示されます ルートの受信を担当するコードをカプセル化します 受信要求と送信応答のディスパッチ。
プロデューサーエンドポイント リクエストを作成します。それらは常に ルートをカプセル化し、ディスパッチを担当するコードをカプセル化します 送信要求と受信応答の受信。
プロデューサは、それが同様に処理方法を有しているプロセッサを拡張します。
これらのラクダの概念について少し告げるキャメルアクションで本の中で自由にチャプター1をチェックしてください。 http://www.manning.com/ibsen/する
そして、それは安定したペースでこれらの概念を紹介し、このチュートリアルでも優れています http://camel.apache.org/tutorial-example-reportincident.html