Akka FSM演员和循环路由

时间:2013-12-05 23:52:15

标签: scala akka fsm

我想使用Akka FSM将一些演员转换为FSM。目前系统的设计方式是每个参与者都知道如何处理它的动作结果,以及哪个参与者按顺序处理。

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

客户端向FSM actor,FSM actor发送一些请求 - 转换到下一个状态 - 向onTransition块中的某个actor发送消息。该演员用一些消息回复发件人,该消息在某种程度上以FSM状态处理,直到请求完成。

到目前为止,一切看起来都不错,但是我不确定如果多个客户端将开始与FSM actor交互会发生什么。 “工作流程”是否会被记录在某处,因此来自不同客户端的流量不会在某些时候发生冲突(例如,FSM actor从另一个客户端接收消息而不是发起消息)?

说10个FSM演员和循环路由器是否安全,或者我需要在来自客户端的每个请求上创建新的FSM actor,然后在完成后终止它?

1 个答案:

答案 0 :(得分:3)

每个Akka FSM actor一次只有一个状态,因此在这种情况下,您不能将多个FSM actor与循环路由器一起使用。您可以考虑在客户端的每个请求上创建一个新的FSM actor。还有其他选项(共享的多用户非Akka FSM和可能“忙碌”的FSM角色池)但是由于Akka演员的轻量级特性,创建每用户FSM应该是更好的解决方案。