我有一个名为 ClusterSystem 的 AKKA 集群系统。该集群的每个节点都有一个参与者 ActorA 。我想要一种方法将发送给参与者的消息广播到集群中运行的所有 ActoraA -s。

如果有人可以在 Java 中发布示例,那将是非常有帮助的。

最佳答案

查看 Distributed Publish Subscribe 扩展。它允许您订阅一个或多个参与者到一个主题,并从集群中的任何参与者向该主题发布消息。

订阅:

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)
  }
}

代码示例和附加说明 here

关于java - 如何在java中向AKKA集群中的所有参与者广播消息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30772983/

10-10 14:00