Akka并发消息通过保留消息顺序进行处理

时间:2015-10-26 10:12:31

标签: concurrency queue jms akka

在我们的项目中,我们向/从JMS代理发布和使用消息。我们有一个PL / SOL生产者和一个Java消费者。然而问题是;他的生产者比消费者快10倍。我们希望在阅读和处理消息时更改消费者以使用多个线程。

但我们也需要保留消息的顺序。也就是说,消息应按照发布给jms代理的顺序发送到目标系统。我是Akka的新手,我试图了解它的功能。我们可以使用akka调度员实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

假设您想在单个JVM实例中并行化消费,那么您所描述的内容是Akka Streams的一个好例子。这可以通过Actors解决,但如果生产者太快,则存在内存不足的风险,因为您需要将结果排队以进行重新排序。

Akka Streams通过引入背压来解决这个问题。如果消费者无法跟上生产者的步伐,它就会表明这一点,而生产者也会降低生产率。 Akka Streams也可以保持消息的顺序。

Akka Streams是一款1.0软件,所以它还不像纯Akka那样具有战斗力,但是它基于Akka并且来自Akka团队,因此它应该是好的并且成为将来会更好。此外,文档还没有以最好的方式组织。

同样重要的是,Akka Streams虽然使用Akka实现,但却与Actor Model或Future组合完全不同。它基于流处理范例,因此您必须调整您对计划的看法。某些团队可能会遇到问题。