我有一个作业处理系统,其中每个作业都包含数千个需要不同策略才能完成的单独任务。单个任务构成了整个工作。如果所有任务都已完成,则将作业标记为成功完成并执行其他步骤,如果任何任务失败,则必须将作业标记为失败并执行其他步骤,如果作业超时,则必须标记作业失败并采取其他步骤。
一旦接收到作业的所有结果,就可以获取下一个作业。当前正在处理作业时,不应获取下一个作业。
这是流程的样子:
Job Polling Verticle 将作业发布到事件总线,Job Processing Verticle 将每个任务发布到事件总线。当作业策略完成时,它将任务结果发布到事件总线。
问题是我不知道在此模型中确定所有任务何时完成的正确方法。所有 Verticle 都是无状态的,Job Processing Verticle 不等待任何未来,即使 Job Results Verticle 是有状态的,它也不知道它应该期待多少结果。
我能想到的唯一方法是拥有一个全局有状态对象。但我不认为这是一个好的设计。
此外,我需要知道 Job 何时超时。也就是说,它运行的时间比它应该运行的时间长,我需要考虑它是失败的,记录它,然后继续。
我可以对全局状态执行此操作,但我再次认为这不是正确的解决方案。
这种垂直模式对我想要做的事情有意义吗?