加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何正确使用Akka的事件流?

发布时间:2020-12-16 18:48:59 所属栏目:安全 来源:网络整理
导读:我一直在Play应用程序中使用Akka的事件流作为事件总线,我可以发布事件和订阅听众,我想知道我应该考虑的问题是什么.具体来说有两件事: 每个监听器都是通过一个接收已发布事件并处理它们的actor来实现的.如果演员的消息队列开始变大怎么办?如何安全地实施背
我一直在Play应用程序中使用Akka的事件流作为事件总线,我可以发布事件和订阅听众,我想知道我应该考虑的问题是什么.具体来说有两件事:

>每个监听器都是通过一个接收已发布事件并处理它们的actor来实现的.如果演员的消息队列开始变大怎么办?如何安全地实施背压,确保最终处理每个事件?
>与前一个相关:如何保留未处理的事件,如果失败,应用程序可以再次启动并处理它们?我知道akka-persistence的存在但是我不确定在这种情况下这是否是正确的做法:监听器演员不是有状态的,他们不需要重播过去的事件,我只是想要存储未处理的事件,并在处理完毕后删除它们.

解决方法

考虑到约束,我不会为此目的使用Akka的事件总线.

主要原因是:

>交付 – 您无法保证事件侦听器实际上正在侦听(无ACK).途中可能会丢失一些事件.
>持久性 – 没有内置的保留事件总线状态的方法.
>缩放 – Akka的事件总线是一个本地设施,这意味着如果将来你想创建一个集群,它是不合适的.

最简单的处理方法是使用RabbitMQ等消息队列.
回来的时候我使用的是sstone/amqp-client.MQ可以为您提供持久队列(每个侦听器/侦听器类型的队列).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读