通常のキューとSEDAのキュー

Apache Camelに新しいので、私は最近、コンポーネントの長いリストを見直し、 SEDAキュー

このページは私にはあまり意味がありませんでした。そのため、「SEDAキュー」という用語をオンラインで検索し、ウィキペディアの記事ここを参照してください。

その記事を読んだ後、私はSEDAキューと普通の「普通の」キューの違いを知ることができません!両方とも、非同期キューを使用してデカップリングシステムの概念を採用しています。

この記事から、「SEDA」は、各コンポーネント間にキューを置くことからなるアーキテクチャのように聞こえるだけです。これは正しいです?

しかし、それが単なるアーキテクチャであれば、なぜ "SEDA"キューは特別なApache Camelコンポーネントですか?

11
SEDAはExecutorService(キューとスレッドプール)のようなキューに接続されたスレッドを意味します。おそらくそれがここでの意味です。
追加された 著者 Peter Lawrey,
この質問が尋ねられて以来、ドキュメントが更新されたかどうかはわかりませんが、基本的には最初の行で「seda:コンポーネントは非同期SEDA動作を提供し、メッセージはBlockingQueueで交換され、コンシューマはプロデューサーとは別のスレッドにあります。
追加された 著者 DavidS,

3 答え

SEDAキューは、通常のキューと同じです(そして、上記のPeterがCamelで述べたように、コンポーネントの一部としてスレッドプールが関連付けられています)。セダは建築です。 CamelのSEDAコンポーネントは、プロセス内のインメモリキューを使用し、Apache camelの他のキューコンポーネント、つまりJMSコンポーネントと区別するために、別のコンポーネントです。

6
追加された

SEDAは、メッセージ処理のさまざまなフェーズ間のフローを調整するメカニズムとして設計されたステージングイベント駆動アーキテクチャの略語です。考え方は、プロセス全体からのメッセージ出力の自由度をスムーズにして入力に一致させることです。これにより、消費者スレッドは長期実行の作業をbakgroundに委ねることができ、メッセージを消費することができます輸送から。 交換がseda:エンドポイントに渡されるとき、それはBlockingQueueに配置されます。このリストは、同じコンテキスト内にあるルートだけがこの種のエンドポイントによって結合されることを意味する、ラクダのコンテキスト内に存在します。キューはデフォルトでは無制限ですが、コンシューマのURIにsize属性を設定することで変更できます。

デフォルトでは、エンドポイントに割り当てられた1つのスレッドは、リストからエクスチェンジを読み取り、それらをルート経由で処理します。手続きの例に見られるように、concurrenctConsumersの数を増やして、交換機が適時にそのリストから処理されるようにすることが可能です。

SEDAパターンは、1つの経路が処理を終了し、次の段階に対処するために別の経路にハンドオフする、InOnlyメッセージの処理に最適です。メッセージ交換パターンがInOutのときに呼び出すことで、seda:エンドポイントからの応答を要求することができます

参照。 Apache Camel Developer's Cookbook

5
追加された

SEDAは、単一のラクダのルート内でコンポーネントのデカップリングを提供します。それとも、単一のプロセス内の問題ですか。 。つまり、他のコンポーネントへの非同期呼び出しを行うのに役立ちます。メモリブロッキングキューイングです。 一方、JMSはシステム全体のデカップリングに使用されます。JMSには外部ブローカが含まれます。SEDAはコンシューマコンポーネントから別のスレッドを作成します

1
追加された