0

我是 Akka.net 的新手。我有 2 个演员,一个要求一个字节数组,另一个从数据库中获取它并告诉发件人。如果第二个参与者在远程,它不会将冗长的数组传递给发送者。如果我想将字节数组作为块发送,我可以从第二个参与者循环告诉发送者,但我不知道如何让第一个参与者监听所有块消息并将它们聚合到单个字节数组. 请帮我解决一下这个。

4

1 回答 1

0

一种解决方法是让来自第二个参与者的第一条消息类似于 PrepareForIncomingData 消息,当接收到第一个参与者时,它会转换到 WaitForDataToComplete 状态,它只接收特定的消息类型,例如 IncomingDataChunk 和 IncomingDataCompleted。

在此状态下,任何其他消息都被隐藏,一旦您收到 IncomingDataCompleted 消息,您就会转换回常规状态并取消隐藏任何隐藏的消息。

请参阅成为/取消成为的文档 - http://getakka.net/articles/actors/receive-actor-api.html#becomeunbecome

或者另一种选择可能是有限状态机 - http://getakka.net/articles/actors/finite-state-machine.html

或者,数据可能被写入共享位置,并且消息仅包含第一个参与者可以从中读取数据的路径。

于 2018-09-13T23:14:59.887 回答