ClusterSystemという名前の AKKA クラスター システムがあります。このクラスターの各ノードには、アクターActorAがあります。アクターに送信されたメッセージを、クラスター内で実行されているすべてのActoraAにブロードキャストする方法が必要です。
誰かがJavaで例を投稿できれば、非常に役立ちます。
ClusterSystemという名前の AKKA クラスター システムがあります。このクラスターの各ノードには、アクターActorAがあります。アクターに送信されたメッセージを、クラスター内で実行されているすべてのActoraAにブロードキャストする方法が必要です。
誰かがJavaで例を投稿できれば、非常に役立ちます。
Distributed Publish Subscribe拡張機能を確認してください。1 つ以上のアクターをトピックにサブスクライブし、クラスター内の任意のアクターからこのトピックにメッセージを発行できます。
購読:
class Subscriber extends Actor with ActorLogging {
import DistributedPubSubMediator.{ Subscribe, SubscribeAck }
val mediator = DistributedPubSub(context.system).mediator
// subscribe to the topic named "content"
mediator ! Subscribe("content", self)
def receive = {
case s: String ⇒
log.info("Got {}", s)
case SubscribeAck(Subscribe("content", None, `self`)) ⇒
log.info("subscribing");
}
}
発行:
class Publisher extends Actor {
import DistributedPubSubMediator.Publish
// activate the extension
val mediator = DistributedPubSub(context.system).mediator
def receive = {
case in: String ⇒
val out = in.toUpperCase
mediator ! Publish("content", out)
}
}
コード例と追加の説明はこちら.
このタスクには特別なタイプのメッセージがあります。メッセージをルーターに送信するBroadcast
と、すべてのルートで受信されます。
router.tell(new Broadcast("Watch out for Davy Jones' locker"), getTestActor());
すべてのメッセージをブロードキャストする必要がある場合は、 BroadcastPoolとBroadcastGroupを作成することもできます。
両方のオプションの詳細については、このリンクを参照してください。