如何订阅Akka中的远程事件

时间:2017-09-26 13:30:38

标签: scala akka

如果我想订阅远程系统中事件流上发布的消息,建议的方法是什么?

所以例如在一个系统中我有代码。

case class MyClass(x: Int)

val es = context.system.eventStream
es.publish(MyClass(3))

在这个系统中我只想到

context.system.eventStream.subscribe(self, classOf[MyClass])

但是如何在远程系统中执行此操作?

1 个答案:

答案 0 :(得分:0)

来自documentation

  

事件流是本地设施,这意味着它不会将事件分发到群集环境中的其他节点(除非您明确地将Remote Actor订阅到流)。如果您需要在Akka群集中广播事件,没有明确了解您的收件人(即获取他们的ActorRef),您可能需要查看:Distributed Publish Subscribe in Cluster

如果您可以获取远程actor的 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { FirebaseApp.configure() var initialViewController: UIViewController! if Auth.auth().currentUser == nil { initialViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MainViewController")//replace your mainviewcontroller identifier } else { initialViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LoginViewController")//replace your loginviewcontroller identifier } window?.rootViewController = initialViewController window?.makeKeyAndVisible() return true } ,只需使用ActorRef将该actor订阅到事件流:

ActorRef

否则,请使用分布式发布订阅功能。