我最近看了great video by Riccardo Terrell about Akka.NET and F#,但我要问的问题一般与Akka有关。我很困惑的一个部分,他讨论了错误的主管和监督策略。在他的示例中,客户端向主管发送消息,通过调用worker.Tell(msg,mailbox.Sender())将消息转发给worker actor。我想知道这种做法有多常见。在我们的系统中,有一些地方客户首先要求主管获取工人实例,然后直接向工人发出Tell调用。我对使用Ask不满意,但在我们的情况下,我们需要工作人员亲和力,即来自同一客户端的消息可能需要路由到同一个工作人员,因此给客户端一个工作人员实例简化了这一点。但同样,Ask也很糟糕。因此,对于有监督的演员,他们是应该通过主管接收消息(避免询问)还是“取决于”?
答案 0 :(得分:0)
一个解决方案可能是使用简单的哈希函数时使用hashing pool,这样就可以消除向提问者发回的引用。
new ConsistentHashingPool(5).WithHashMapping(o =>
{
if (o is IHasCustomKey)
return ((IHasCustomKey)o).Key;
return null;
});
欢迎任何评论!