我有一个要求,我的应用程序提交某种任务。该任务由客户提交。为了确保他们最终不会提交太多任务,每次他们提交任务时,我都会检查正在运行的进程以及它们是否由同一个客户端提交。如果是这样,则不会提交任务。我想为这类任务水平扩展。因此,我将让多个工作人员在不同的机器上运行,以确保更高的可用性,但是我想确保只有一个任务实例正在被主动处理,并且该任务应该在同一个客户端提交的另一个实例被处理之前完成.
例如,如果提交的任务的年表是 -
Client 1 submits t1
Client 1 submits t2
Client 2 submits t3
如果t1
仍在处理中并且如果一个工人被释放,那么它应该拿起t3
而不是t2
。
我怎么解决这个问题?速率限制不是一个选项,因为我不知道这些任务需要多长时间。
谢谢,