35

私はその概念に頭を悩ませています。

独自の形式の受信メッセージを tcp ポートでリッスンするエンドポイントを実装しようとしています。これにより、メッセージが変換され、キャメルが転送とルーティングを引き継ぎます。

Producer が にメッセージを送信し、がそのエンドポイントからメッセージを受信するEndpointことを正しく理解できましたか?Consumer

インターフェイスを調べたとき、特にコンシューマー側で、これらのオブジェクト間のメッセージ フローを理解できませんでした。Consumer定義start()stop()メソッドのみ...

エンドポイントとプロデューサー オブジェクトでCamel呼び出されるスケルトン実装でテストを設定する場合。その後、関連するコンシューマまたはプロセッサに何もせずに戻ってきました。createProducer()process()

誰かが私を正しい方向に向けることができますか?

4

3 に答える 3

59

(つまり、エンドポイント ファクトリ)Endpointによって作成されたは、 Camel のどちらの端にも配置できることを覚えておくことが重要です。Componentをルートの先頭に配置する場合、Componentの一部の実装が必要です。これは、特定の入力/リクエスト (HTTP リクエストなど) を、 Routeをたどることができる汎用的なもの (Camel) に変換する作業を行います。コンポーネントをルートの最後に配置する場合は、 の実装が必要です。Producerは、ルートの終わりからExchangeを取得する作業を行います。ComponentRouteConsumerExchangeProducerそして、それを特定のもの (JMS メッセージなど) に変換します。

Fuse ESB のドキュメントは、(一般的に) Apache Camelの Web サイトよりも優れていると思います。Fuse ESB コンポーネント ページから:

コンシューマ エンドポイントはリクエストを消費します。これらは常にルートの先頭に表示され、着信リクエストの受信と発信応答のディスパッチを担当するコードをカプセル化します。

プロデューサー エンドポイントはリクエストを生成します。これらは常にルートの最後に表示され、発信リクエストのディスパッチと着信応答の受信を担当するコードをカプセル化します。


ここに画像の説明を入力

于 2013-10-31T12:12:57.123 に答える
21

私はついにStreamコンポーネントを見てそれを理解しました。

エンドポイントを、すべてが行かなければならない中心的なものとして考えるのを間違えたことがわかりました。

簡単な答えは、コンシューマーが外部システム(私の場合はサーバーソケットでリッスンしている)からデータを受信し、プロデューサーが外部システムにデータを送信することです。

私のエンドポイントは読み取り専用であるため(Camelルーティングプロセスの最終的な宛先としては使用されません)、実際にはプロデューサーは必要ありません(構成の誤りが原因でシステムがRuntimeExceptionをスローしようとする場合は、RuntimeExceptionをスローする必要があります)。適切な例は、ラクダ原子エンドポイントです。フィードを読み取ることはできますが、(1.6.0以降)公開することはできません。

同様に、外部システム(ロギングなど)からデータを受信しない書き込み専用エンドポイントのプロデューサーのみが必要です。

于 2010-01-23T16:02:51.203 に答える
8

プロデューサーはプロセッサーを拡張します。これは、プロセッサーメソッドも持つことを意味します。

これらのCamelの概念について少し説明しているCamelinActionの本の無料の第1章をチェックしてください。 http://www.manning.com/ibsen/

また、このチュートリアルは、これらの概念を一定のペースで紹介しているため、優れてい ますhttp://camel.apache.org/tutorial-example-reportincident.html

于 2010-01-22T18:50:31.190 に答える