如何在集群系统中的Actor外部执行带有Ask的Request-Response?

时间:2019-07-10 18:16:01

标签: java protocol-buffers akka-persistence akka-typed

我正在设置一个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并处理其序列化。

0 个答案:

没有答案