第85章 Disruptor コンポーネント


Camel バージョン 2.12 以降で利用可能

disruptor: コンポーネントは、標準の SEDA コンポーネントと同様に非同期 SEDA の動作を提供しますが、標準の SEDA で使用される BlockingQueue の代わりに Disruptor を使用します。または、次のようになります。

disruptor-vm: エンドポイントはこのコンポーネントでサポートされており、標準の 仮想マシン に代わるものを提供します。SEDA コンポーネントと同様に、disruptor: エンドポイントのバッファーは 単一 の CamelContext 内でのみ表示され、永続性や回復はサポートされません。また、disruptor-vm: エンドポイントのバッファーは、CamelContexts インスタンス間の通信をサポートするため、このメカニズムを使用して Web アプリケーション間で通信できます (camel-disruptor.jarシステム/ブート クラスパスにある場合)。

SEDA または仮想マシンコンポーネントよりも Disruptor コンポーネントを使用することを選択する主な利点は、プロデューサ間および/またはマルチキャストまたは同時コンシューマー間の競合が激しいユースケースでのパフォーマンスです。これらのケースでは、スループットの大幅な向上とレイテンシーの削減が観察されています。競合のないシナリオでのパフォーマンスは、SEDA および VM コンポーネントに匹敵します。

Disruptor は、SEDA および仮想マシンコンポーネントの動作とオプションを可能な限り模倣することを目的として実装されています。それらとの主な違いは次のとおりです。

  • 使用されるバッファーのサイズは常に制限されています (デフォルトでは 1024 エクスチェンジ)。
  • バッファーは常にバウンドしているため、Disruptor のデフォルトの動作は、例外を出力する代わりに、バッファーがいっぱいの間ブロックすることです。このデフォルトの動作は、コンポーネントで設定できます (オプションを参照)。
  • Disruptor エンドポイントは BrowsableEndpoint インターフェイスを実装しません。そのため、現在 Disruptor にあるエクスチェンジは取得できず、エクスチェンジの量のみが取得されます。
  • Disruptor は、そのコンシューマー (マルチキャストまたはその他) を静的に設定する必要があります。その場でコンシューマーを追加または削除するには、Disruptor で保留中のすべてのエクスチェンジを完全にフラッシュする必要があります。
  • 再設定の結果: Disruptor 経由で送信されたデータは直接処理され、少なくとも 1 つのコンシューマーが存在する場合は 'なくなり' ます。遅れて参加したユーザーは、参加した後に公開された新しいエクスチェンジのみを取得します。
  • pollTimeout オプションは Disruptor コンポーネントではサポートされていません。
  • プロデューサーが完全な Disruptor でブロックすると、スレッド割り込みに応答しません。

Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-disruptor</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

85.1. URI 形式

 disruptor:someName[?options]

または

 disruptor-vm:someName[?options]

someName は、現在の CamelContext 内 (またはコンテキスト全体) でエンドポイントを一意に識別する任意の文字列にすることができます。
disruptor-vm:)。
URI には、次の形式でクエリーオプションを追加できます。

  ?option=value&option=value&…
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.