如果 actor 启动并订阅 Akka Event Bus 中的 channel ,actor 有没有办法消费已经发送到该 channel 但未被任何其他 actor 消费的事件?
换句话说,我希望 Actor “收集邮件”。也许事件总线是错误的,我不知道。
最佳答案
如果没有订阅 channel ,消息将发送到 DeadLetter channel 。理论上,您可以编写一个自定义角色并将其订阅到 Deadletter 事件流(查看 DeadLetter 的记录器角色)以跟踪所有未使用的消息。您可以在每个 channel 的 actor 中设置按大小队列(“last n 个消息邮箱”)的限制,并使其监听自定义 channel “邮件”。邮箱队列也可以基于外部持久性(redis、rdbs 等)。您 channel 的每个新订阅者都应检查“邮件” channel 并使用邮件参与者中特定主题队列中的所有消息(如果有)。这在任何启用持久性的代理上模拟常规消息队列。
关于scala - Akka 事件总线 : find unconsumed events in a channel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21818299/