Ale*_*yev 6 java architecture message-queue task
考虑一组有限的任务必须在一段时间内完成(在这段时间内均匀分布),然后一再重复.
在一个本地工作者/线程的情况下,我们只是做这样的事情(抱歉伪代码):
long interval = period / tasks.size
while (true) {
for (task in tasks) {
task.do()
sleep(interval)
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我希望以分布式方式,多个独立工作人员.
对于这样的案例,是否有一些已知的最佳实践解决方案(最好来自Java世界)?循环消息队列?分布式锁定任务?我已经google了一点安静,但看不到任何优雅的开箱即用解决方案.
Gad*_*adi -1
您可以使用 Java-8 流运行stream.paralle(),如下所示:
List<Task> tasks = new ArrayList<>();
Stream.of(tasks).parallel().forEach(t -> t.doSomething());
Run Code Online (Sandbox Code Playgroud)
这将为您使用所有 CPU 资源。
如果您需要一个更像集群的解决方案,即通过网络运行,您有不同的选择,但它们都涉及一些框架。
我个人更喜欢 Vert.x,它很容易设置集群,并且使用事件总线可以分配工作负载。其他简单的选择是 Spring。
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |