我使用Akka .NET一致性哈希路由器进行了一些实验。在我看来,虽然你可以指定用于散列的密钥,但路由器决定如何在各个角色之间分配密钥。
我本来希望做一些像Actor A接收A类消息,Actor B接收类型B的消息等等。这是否可以使用一致的哈希路由器?
答案 0 :(得分:2)
不,现有路由器无法实现。
您可以使用EventBus(Context.System.EventStream.Subscribe(Self, typeof<MyMessage>);
)将您的演员订阅到特定的消息类型,并通过调用system.EventStream.Publish(new MyMessage());
发布它们 - 这样发布的消息将发送给所有订阅者。该方法的局限性在于它仅适用于单个ActorSystem的范围。
对于分布式发布/订阅方案,您可以使用Akka.Cluster.Tools插件,该插件公开此类选项。但请记住,在这种情况下,订阅密钥是字符串而不是消息类型。