java - 是否可以知道 Akka 的 "Distributed Publish Subscribe in Cluster"中收到了哪个主题的消息?

标签 java akka distributed publish-subscribe

我有一个 Akka 系统,其中的 Actor 代表传感器。每次传感器进行观察时,其相应的 Actor 都会在内部发布/订阅主题上发布此观察结果。这使得扩展观察的使用变得容易(由一个 Actor 保存在数据库中,由另一个 Actor 发布到 MQTT 代理,等等)

让接收者知道其收到的消息涉及哪个主题的一个可能的解决方案是在消息中包含该主题。然而,这对我来说似乎是糟糕的设计。是否可以在 Akka 的 Actor 中查看当前消息是在哪个主题上收到的?

据我所知,Akka 关于集群中的分布式发布订阅 ( http://doc.akka.io/docs/akka/current/java/distributed-pub-sub.html ) 的文档并未提及这一点。

最佳答案

据我所知,这不是分布式发布/订阅的内置功能。我通常会通过制作某种信封来解决这个问题:

case class PubSubEnvelope[MessageType](topic: String, payload: MessageType)

为了额外的安全性,也许您希望为 MessageType 创建某种父类(super class)型,以便可以约束它,并为 topic 创建一些类似枚举的结构字符串

关于java - 是否可以知道 Akka 的 "Distributed Publish Subscribe in Cluster"中收到了哪个主题的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39648587/

相关文章:

scala - 如何在 Tomcat 上部署 Scala/akka 应用程序?

scala - 为什么我的 akka 日志在游戏中不起作用

java - synchronized(){} 的异步(非阻塞)版本

java - 如何从hadoop缓存中存在的文本文件访问文本

javascript - 使用 Java 从网站保存 SVG 图像(桌面)

Java 断言未得到充分利用

java - 从按钮单击事件打开另一个 JFrame

java - 获取有关 JVM 崩溃的信息

java - 使用 iMap 的 Hazelcast 分布式锁

java - 使用Java代码进行Jmeter分布式测试