4

如果一个 Actor 启动并订阅了 Akka 事件总线中的一个通道,那么这个 Actor 有没有办法消费已经发送到该通道但没有被任何其他 Actor 消费的事件?

换句话说,我希望演员“收集邮件”。也许事件总线对此是错误的,我不知道。

4

1 回答 1

4

如果没有订阅频道,则消息将发送到 DeadLetter 频道。理论上,您可以编写一个自定义 Actor 并将其订阅到 Deadletter 事件流(查看 DeadLetter 的记录器 Actor)以跟踪所有未使用的消息。您可以在每个通道的参与者中设置一个按大小绑定的队列(“最后 n 条消息邮箱”),并使其监听自定义通道“邮件”。邮箱队列也可以基于外部持久性(redis、rdbs 等)。您频道的每个新订阅者都应检查“邮件”频道并使用邮件参与者中特定主题队列中的所有消息(如果有)。这模拟了任何启用持久性的代理上的常规消息队列。

于 2014-02-19T10:36:57.123 回答