当生产者比消费者更快时,限制发送给akka演员的工作的适当方法是什么?

时间:2017-01-22 01:04:50

标签: akka

请原谅我,如果这是一个基本/众所周知的模式,但我一直在研究,无法找到解决方案。也许我正在寻找错误的条款。

我有一个制片人akka演员,它抽出几个小工作,每个工作约50 KB。我目前正通过循环路由器向消费者akka演员发送这些工作。

问题的根源是制作人比消费者演员快得多。

我一直在推动我自己的解决方案,添加等待状态并测量进程的平均时间,以保持稳定的工作节奏而不会炸毁actor消息队列。但这涉及到演员之间的一些同步,我不认为这是akka这样做的方式....它没有松动,它是一个闭环并有反馈,导致同步问题(确定发送消息的速度需要消费者的反馈)。如果我不加油,队列会在2到3分钟内爆炸。

我认为我做错了。

那么,如果您的生产者比消费者角色更快,那么适当的模式/方法是什么?我是否需要中间人,如消息队列或数据库?

提前感谢任何指示。

2 个答案:

答案 0 :(得分:2)

创建

Akka Streams是为了解决这个问题(除此之外)。看看它,它处理这些处理流水线的更快/更慢阶段之间的背压。

它也可以使用此处Akka Streams: Integrating with Actore解释的Sinks / Sources与Actors很好地集成。

答案 1 :(得分:0)

是Akka Streams是解决方案。感谢Viktor Klang和Konrad'ktoso'Malawski的回复。 这篇文章可能会为您提供开发视角的快速帮助。 https://blog.redelastic.com/diving-into-akka-streams-2770b3aeabb0#.z0yoceoox