请原谅我,如果这是一个基本/众所周知的模式,但我一直在研究,无法找到解决方案。也许我正在寻找错误的条款。
我有一个制片人akka演员,它抽出几个小工作,每个工作约50 KB。我目前正通过循环路由器向消费者akka演员发送这些工作。
问题的根源是制作人比消费者演员快得多。
我一直在推动我自己的解决方案,添加等待状态并测量进程的平均时间,以保持稳定的工作节奏而不会炸毁actor消息队列。但这涉及到演员之间的一些同步,我不认为这是akka这样做的方式....它没有松动,它是一个闭环并有反馈,导致同步问题(确定发送消息的速度需要消费者的反馈)。如果我不加油,队列会在2到3分钟内爆炸。
我认为我做错了。
那么,如果您的生产者比消费者角色更快,那么适当的模式/方法是什么?我是否需要中间人,如消息队列或数据库?
提前感谢任何指示。
答案 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