我正在设置一个PersistentEntity
(具体来说为EventSourcedEntity<Command, Event, State>
),并由持久日志支持,以处理命令并在恢复时重放事件。我正在使用ClusterSharding
在多个节点上设置此PersistentEntity
。我想使用外部系统(例如Spring的RestController
)向该实体发送命令,然后等待响应。我所有的命令和事件都是从protobuf消息生成的。
我已经尝试过此处描述的ask
交互模式:https://doc.akka.io/docs/akka/current/typed/interaction-patterns.html#request-response-with-ask-from-outside-an-actor
这在不需要序列化的非群集单节点系统中效果很好。但是,当该实体存在于另一个节点上,而akka决定连线我的命令时,如果我想使用protobuf序列化,这种方法将行不通。也没有简单的方法来序列化actor-refs。
对于没有类型的演员,我本可以使用来自响应演员的context.sender
来获得即使在外部演员系统之外的响应。但是,对于类型化的actor,我基本上只能通过有线方式在命令消息内发送actor-ref并处理其序列化。