Akka 自定义邮箱连接更新

Akka custom mailbox to concatenate updates

我不确定我是否只是想用这个解决方案来破坏邮箱,但我正在做的是:

我有一个金融应用程序,其中有一个演员,他的工作是根据当前市场数据和客户头寸组合计算一些分析。

发给我演员的每条 "Work" 消息都包含市场数据变化的当前快照(自上次以来)以及投资组合的变化(自上次以来),

在压力高峰期 - 演员无法足够快地处理 "Work",因此邮箱开始缓冲 "Work" 消息。

问题:我的工作消息 NOT 有损 - 所以我不能丢弃它们并保留最新的,但同时处理每条消息非常浪费"Work" 消息变得非常陈旧,尤其是当演员越来越落后时。

我的解决方案:我正在尝试实现一个自定义邮箱,如果没有当前消息,该邮箱可以将消息加入队列,或者 用新消息替换当前消息,该新消息会将 oldWork 与 NewWork。这样当 actor 准备好处理更多时 "Work" 邮箱中的项目将是最新的累积信息。

我的问题:

Error:(98, 38) constructor Envelope in class Envelope cannot be accessed in class InstrumentedMailbox val newEnvelope:Envelope = Envelope(mergedMessage,handle.sender)

看来信封不太喜欢被人打扰。

This solution 几乎是我想要的 - 除了我需要能够修改消息而且我似乎无法弄清楚如何创建我自己的信封

感谢您的建议!

我觉得你确实是在滥用邮箱。邮箱只是为了有一个异步边界。它并不意味着用复杂的用户代码进行定制。

如果 actor 立即读取和组合消息,并根据请求将组合的消息发送给实际工作人员(参见 work-pulling pattern

,您会感觉更好