検索

165.5. 事前定義された式

download PDF

Camel バージョン 2 .13.0 以降、JGroups コンポーネントには JGroups Expressions という名前の事前定義された式ファクトリークラスが同梱されています。

Camel コンテキストがまだ開始されていない場合にのみルートに影響を与える遅延を作成する場合は、JGroupsExpressions.delayIfContextNotStarted(long delay) ファクトリーメソッドを使用します。このファクトリーメソッドによって作成された式は、Camel コンテキストが 開始 したものとは異なる場合にのみ指定の遅延値を返します。この式は、クラスター内でシングルトン(マスター)ルートを維持するために JGroups コンポーネントを使用する場合に便利です。Control Bus start コマンドは、Camel Context が起動していない場合はシングルトンルートを初期化しません。そのため、マスタールートの起動を遅延させ、Camel Context の起動後に初期化されていることを確認する必要があります。このようなシナリオはクラスターの初期化中にのみ発生する可能性があるので、スレーブノードの起動を新しいマスターに遅延させたくないので、条件的な遅延式が必要なからです。

以下のスニペットは、JGroups コンポーネントと条件遅延を使用して、クラスター内のマスターノードの初期起動を遅らせる方法を示しています。

import static java.util.concurrent.TimeUnit.SECONDS;
import static org.apache.camel.component.jgroups.JGroupsExpressions.delayIfContextNotStarted;
import static org.apache.camel.component.jgroups.JGroupsFilters.dropNonCoordinatorViews;
...
from("jgroups:clusterName?enableViewMessages=true").
  filter(dropNonCoordinatorViews()).
  threads().delay(delayIfContextNotStarted(SECONDS.toMillis(5))). // run in separated and delayed thread. Delay only if the context hasn't been started already.
  to("controlbus:route?routeId=masterRoute&action=start&async=true");

from("timer://master?repeatCount=1").routeId("masterRoute").autoStartup(false).to(masterMockUri); 
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.