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