174.7. 例
174.7.1. JGroups クラスターへの (からの) メッセージの送信 (受信)
JGroups クラスターにメッセージを送信するには、以下のスニペットで示されているように、プロデューサーエンドポイントを使用します。
from("direct:start").to("jgroups:myCluster");
...
producerTemplate.sendBody("direct:start", "msg")上記のスニペットからメッセージを受信するには (同じ物理マシンまたは別の物理マシンで)、以下のコードフラグメントで示されているように、特定のクラスターからのメッセージをリッスンします。
mockEndpoint.setExpectedMessageCount(1);
mockEndpoint.message(0).body().isEqualTo("msg");
...
from("jgroups:myCluster").to("mock:messagesFromTheCluster");
...
mockEndpoint.assertIsSatisfied();174.7.2. クラスタービューの変更通知を受け取る
以下のスニペットは、クラスターメンバーシップの変更に関する通知をリッスンするコンシューマーエンドポイントを作成する方法を示しています。デフォルトでは、通常のメッセージのみがエンドポイントによって消費されます。
mockEndpoint.setExpectedMessageCount(1);
mockEndpoint.message(0).body().isInstanceOf(org.jgroups.View.class);
...
from("jgroups:clusterName?enableViewMessages=true").to(mockEndpoint);
...
mockEndpoint.assertIsSatisfied();174.7.3. クラスター内にシングルトンルートを保持する
以下のスニペットは、キャメルコンテキストのクラスターにシングルトンコンシューマールートを保持する方法を示しています。マスターノードが停止するとすぐに、スレーブの 1 つが新しいマスターとして選出され、開始されます。この特定の例では、アドレス ` http://localhost:8080/orders` でリクエストをリッスンするシングルトン jetty インスタンスを維持したいと考えています。
JGroupsLockClusterService service = new JGroupsLockClusterService();
service.setId("uniqueNodeId");
...
context.addService(service);
from("master:mycluster:jetty:http://localhost:8080/orders").to("jms:orders");