在我们的项目中,我们向/从JMS代理发布和使用消息。我们有一个PL / SOL生产者和一个Java消费者。然而问题是;他的生产者比消费者快10倍。我们希望在阅读和处理消息时更改消费者以使用多个线程。
但我们也需要保留消息的顺序。也就是说,消息应按照发布给jms代理的顺序发送到目标系统。我是Akka的新手,我试图了解它的功能。我们可以使用akka调度员实现这一目标吗?
答案 0 :(得分:0)
假设您想在单个JVM实例中并行化消费,那么您所描述的内容是Akka Streams的一个好例子。这可以通过Actors解决,但如果生产者太快,则存在内存不足的风险,因为您需要将结果排队以进行重新排序。
Akka Streams通过引入背压来解决这个问题。如果消费者无法跟上生产者的步伐,它就会表明这一点,而生产者也会降低生产率。 Akka Streams也可以保持消息的顺序。
Akka Streams是一款1.0软件,所以它还不像纯Akka那样具有战斗力,但是它基于Akka并且来自Akka团队,因此它应该是好的并且成为将来会更好。此外,文档还没有以最好的方式组织。
同样重要的是,Akka Streams虽然使用Akka实现,但却与Actor Model或Future组合完全不同。它基于流处理范例,因此您必须调整您对计划的看法。某些团队可能会遇到问题。