我有一个名为ClusterSystem的 AKKA 集群系统。该集群的每个节点都有一个演员ActorA。我想要一种将发送给参与者的消息广播到集群中运行的所有ActoraA -s 的方法。
如果有人可以用 Java 发布一个示例,那将是非常有帮助的。
我有一个名为ClusterSystem的 AKKA 集群系统。该集群的每个节点都有一个演员ActorA。我想要一种将发送给参与者的消息广播到集群中运行的所有ActoraA -s 的方法。
如果有人可以用 Java 发布一个示例,那将是非常有帮助的。
查看分布式发布订阅扩展。它允许您为一个或多个参与者订阅一个主题,并从集群中的任何参与者向该主题发布消息。
订阅:
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以防您需要广播每条消息。
您可以在此链接中找到有关这两个选项的更多信息。