我有一个Akka系统,Actors代表传感器。每次传感器进行观察时,其相应的Actor都会在内部发布/订阅主题上发布此观察结果。这样可以很容易地扩展观察的用法(由一个Actor保存在DB中,由另一个Actor发布到MQTT代理等)。
使接收者知道其收到消息的主题的可能解决方案是在消息中包含该主题。然而,这对我来说似乎是糟糕的设计。是否可以在Akka的Actor中查看当前消息的哪个主题?
Akka关于Distributed Publish在群集中订阅的文档(http://doc.akka.io/docs/akka/current/java/distributed-pub-sub.html)在我看来并没有提到这一点。
答案 0 :(得分:0)
据我所知,这不是作为Distributed Pub / Sub的功能构建的。我通常会通过制作某种信封来解决这个问题:
case class PubSubEnvelope[MessageType](topic: String, payload: MessageType)
为了更加安全,也许您想为MessageType
制作某种超类型,以便限制它,以及topic
而不是String
的类似枚举的结构