我正在尝试在集群中使用发布/订阅模式。 这方面的文档非常差。
我正在寻找的场景是: 1. Actor 订阅一个事件。 2. 在代码的任意位置,向参与者系统中此事件的所有订阅者发布消息,而不选择参与者。
根据“现有”文档,这样做的方法是使用: DistributedPubSub.Get(Context.System).Mediator;
但是,一旦启动调解器,我就会收到“关联”异常。
- 我错过了什么?
- 谁能给我指出一个工作演示?
谢谢
最佳答案
您真的希望向集群中每个节点中的所有参与者发送相同的消息吗?
我是 Akka.NET 的新手,但如果我要着手解决这个问题,我可能会尝试创建一个 actor 来监听集群八卦以了解参与节点,并可能尽可能地记录各个 actor 的记录,否则找到一种方法来查询包含的参与者的各个节点。一旦您引用了这些 Actor ,向他们发送消息应该足够直截了当。
无需担心发现集群中所有参与者的内置方式,您可以将其构建为每个节点的一部分,以指定一个参与者(可能从路由器 1:1 部署到节点),维护所有参与者的注册表本地 Actor 。也许可以在查询时提供对这些参与者的引用,或者该节点可以仅充当代理/网关以向本地参与者广播消息。
一般来说,如果您谈论的是路由器后面的节点,那么您似乎应该能够将您的消息包装在广播消息中,以便为路由获得预期的效果。
关于c# - Akka.Net (C#) 向集群中的所有参与者发布消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36239797/