我正在尝试在群集中使用pub / sub模式。 关于这方面的文件非常糟糕。
我正在寻找的方案是: 1.演员订阅某个活动。 2.在代码中的任何地方,在actor系统中向该事件的所有订阅者发布消息,而不选择actor。
来自"现有"文档,这样做的方法是使用: DistributedPubSub.Get(Context.System).Mediator;
但是,一旦我发起调解员,我就会得到一个"协会"异常。
由于
答案 0 :(得分:1)
您是否真的希望向群集中每个节点中的所有演员发送相同的消息?
我是Akka.NET的新手,但如果我要解决这个问题,我可能会尝试创建一个演员,听取群集八卦来了解参与节点,并且如果可能的话也可能记录个别演员的记录否则找到一种查询所包含的actor的各个节点的方法。一旦你引用了这些演员,向他们发送信息应该是直截了当的。
不用担心以内置的方式发现集群中的所有角色,您可以将其构建为每个节点的一部分,以指定一个actor(可能从路由器以1:1的方式部署到一个节点)来维护所有当地演员。也许在查询时可以提供对这些参与者的引用,或者这个节点可以作为向本地参与者广播消息的代理/网关。
一般而言,如果您正在谈论路由器后面的节点,您似乎应该能够将您的消息包装在广播消息中,以获得路由的预期效果。