我们计划在项目中使用akka pub-sub。我有以下2个查询注册。 akka pub-sub行为。
如果发布者在任何演员订阅之前开始发送消息,该怎么办?在任何订户出现之前发布的那些消息会发生什么。那些会被默默地丢弃吗?
如果订阅者演员死亡怎么办?[根本没有订阅者]发布者发送的消息会在某处累积,还是会被pub-sub系统丢弃。
答案 0 :(得分:2)
消息路由在现场决定:没有订阅者,没有发送。在工具包中任意缓冲消息只会导致令人惊讶的内存中断。如果你想要缓冲,你必须明确地做到这一点。
答案 1 :(得分:0)
如果没有人订阅,则不会捕获邮件。但如果你把事情做好,那就不是问题了。
对于第二个问题,它取决于你死的意思。演员死亡是演员永远消失的地方。这与演员失败和重启不同。如果在其主管中使用故障处理重新启动actor,则会保留其邮箱,以便不丢失任何内容。只有当演员完全死亡(未重启)时,它才会丢失其邮箱。
因此,通过良好的故障处理方案,您可以在大多数用例的情况下保留您的消息。只需让你的听众在演员heiarchy中处于更高的位置,并将所有可能失败的风险事件(例如I / O)推到底部。查看错误内核模式以了解我的意思。这样,失败通常不会高到足以让你失去邮箱。
由于它只是重新启动,它订阅的所有邮件仍然会在其邮箱中结束并等待它。