Akka有限状态机(FSM)演员和循环路由

3

我想使用Akka FSM将一些演员转换为有限状态机。目前,系统的设计方式是每个演员都知道如何处理其操作的结果以及下一个要处理的演员。

现在,我想要一些专门的演员,他们只做他们应该知道的事情(而不知道整个消息路由),以及中央FSM,它知道如何路由消息和处理转换流程。

客户端向FSM演员发送请求,FSM演员在转换到下一个状态时,向onTransition块中的某个演员发送消息。该演员用某些消息回复发件人,在FSM状态内进行处理,直到请求完成。

到目前为止,一切看起来都很好,但是我不确定如果多个客户端开始与FSM演员交互会发生什么。 "工作流"是否会被记录在某个地方,以便来自不同客户端的流程不会在某个点上相互冲突(例如,FSM演员接收到来自另一个客户端而不是原始客户端的消息)?

使用10个FSM演员和轮询路由器安全吗,还是需要在每个客户端请求时创建新的FSM演员,然后在完成后将其关闭?

1个回答

3
每个Akka FSM actor一次只能有一个状态,因此在这种情况下无法使用带有轮询路由器的多个FSM actors。您可以考虑在每个客户端请求时创建一个新的FSM actor。还有其他选项(共享的多用户非Akka FSM和可能“忙碌”的FSM actors池),但是创建每个用户的FSM应该是更好的解决方案,因为Akka actors具有轻量级的特性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接