2

私は Camel を試しており、エンドポイントの統合に便利なツールであることがわかりました。次の実験用アプリケーションをセットアップしました。

最初のエンドポイントは単純な http-get リクエストです (コマンド ラインで curl を使用)。これは、Jetty (これは Camel ベースのアプリです) を使用して中央スイッチとインターフェイスします。これはいくつかの基本的な調整を行い、リクエストを処理する別のエンドポイント (Thrift サーバー) にリクエストを渡します。その応答は、コマンドライン クライアントに返されます。したがって、セットアップは一種の階層 3 オーバーエンジニアリングされた Hello-world アーキテクチャです。

私のルートは通常、次の形式を取ります。

from("jetty:http://localhost:8080/hello").process(new DummyProcessor()).process(new HelloProcessor());

私の質問は次のとおりです。

HelloProcessor が Thrift メッセージを別のエンドポイントに送信して処理することを考えると、これはむしろコンポーネントであるべきではありませんか? そのようなタスクにプロセッサを使用することは良い (許容できる) 慣行ですか? さらに、実際に許容できる場合、コンポーネントを作成する利点は何ですか。

4

1 に答える 1

4

コンポーネントを 1 つまたはいくつかのルートで使用する場合、コンポーネントを作成する利点はありません。

将来、このプロセッサーを複数のルートで使用する予定で、いくつかのパラメーターで構成する方法が必要な場合は、通常、独自のコンポーネントを作成します。また、おそらくルートが読みやすくなります。コンポーネントは、異なる Camel アプリケーションやプロジェクト間で簡単に共有できるアーティファクトでもあります。

from("file:///var/files/inbox").to("http://www.example.com/");
vs
from("file:///var/files/inbox").process(sendHttpToExampleDotComProcessor); // or whatever

1 回限りの使用の場合 - 過度に複雑にしないでください。

于 2013-01-15T09:26:51.750 に答える