在akka中有序执行

时间:2015-04-18 08:06:24

标签: java akka

我需要创建一个需要处理产品更新的应用程序。对于给定产品,必须按顺序处理更新,但不同产品的更新是独立的,因此可以并行处理。此外,对于给定的产品,必须先完成更新,然后才能开始该产品的下一次更新。

在直接Java中,解决方案似乎相当简单(只需创建一些有序的执行程序,每个产品维护一个任务队列并向其提交任务)但我想知道这是否可能在akka中。从阅读文档看起来可能是通过使用自定义路由器和固定调度程序,但我很难确切地看到它将如何工作。

1 个答案:

答案 0 :(得分:0)

为每个产品制作一个单独的演员。这是Akka演员的完美用例。更新将由发送给产品参与者的消息表示。

1)"对于给定的产品,必须按顺序处理更新"
完成。演员邮箱中的消息(更新)将按顺序处理。

2)"不同产品的更新是独立的,因此可以并行处理"
完成。单独的产品由不同的参与者代表 - 它们可以并行工作。

3)"对于给定产品,必须先完成更新,然后才能开始对该产品进行下一次更新"
完成。一个演员不会一次处理更多的消息。

4)"大量产品(> 100K)可能会使每个产品的演员变得不可行"
没问题。演员非常轻量级,他们不会阻止线程。你可以有数百万的演员。

5)"这可以通过将产品分成几个部分,然后每个产品部分都有一个演员来减轻这种情况"
是的,那也行。