1

我已经对 Akka .NET 一致的散列路由器进行了一些实验。在我看来,尽管您可以指定用于散列的密钥,但路由器决定如何在参与者之间分配密钥。

我本来想做一些事情,比如演员 A 接受 A 类型的消息,演员 B 接受 B 类型的消息,等等。这对于一致的散列路由器是否可能?

4

1 回答 1

2

不,现有路由器不可能。

您可以使用 EventBus ( ) 为您的演员订阅特定的消息类型Context.System.EventStream.Subscribe(Self, typeof<MyMessage>);并通过调用发布它们system.EventStream.Publish(new MyMessage());- 这样发布的消息将发送给所有订阅者。这种方法的局限性在于它只能在单个 ActorSystem 的范围内工作。

对于分布式发布/订阅场景,您可以使用Akka.Cluster.Tools插件,它公开了此类选项。但是请记住,在这种情况下,订阅密钥是字符串而不是消息类型。

于 2016-08-11T05:28:59.930 回答