考虑一组有限的任务必须在一段时间内完成(在这段时间内均匀分布),然后一再重复.
在一个本地工作者/线程的情况下,我们只是做这样的事情(抱歉伪代码):
long interval = period / tasks.size
while (true) {
for (task in tasks) {
task.do()
sleep(interval)
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我希望以分布式方式,多个独立工作人员.
对于这样的案例,是否有一些已知的最佳实践解决方案(最好来自Java世界)?循环消息队列?分布式锁定任务?我已经google了一点安静,但看不到任何优雅的开箱即用解决方案.
为什么调用此函数不会打印任何内容?
(defn test-go-loop []
(go (for [a (cycle [:a :b :c])]
(do (println a) (<! (timeout 1000))))))
Run Code Online (Sandbox Code Playgroud)