我正在javaspring中编写一个任务调度模块来处理存储在mysql数据库中的任务项。
任务表的架构结构:
ID | TASK_UUID | TASK_CONTENT(VARCHAR) | CREATED_TS | UPDATED_TS | STATUS(NEW/PROCESSING/COMPLETE)
我想实现多个任务调度器worker,从任务表中获取要执行的任务。如何确保任务调度器不会同时获得相同的任务来执行?有什么好的java框架我可以利用吗?
我正在javaspring中编写一个任务调度模块来处理存储在mysql数据库中的任务项。
任务表的架构结构:
ID | TASK_UUID | TASK_CONTENT(VARCHAR) | CREATED_TS | UPDATED_TS | STATUS(NEW/PROCESSING/COMPLETE)
我想实现多个任务调度器worker,从任务表中获取要执行的任务。如何确保任务调度器不会同时获得相同的任务来执行?有什么好的java框架我可以利用吗?
2条答案
按热度按时间mjqavswn1#
你可以创建这个方法
getTask
作为同步方法:如:
编辑1:如果是,只需使用SELECTFORUPDATE查询来阻止其他查询访问同一任务。如:
您可以创建一个过程来 Package 查询。
63lcw9qa2#
你可以这样处理原子性或事务问题,
使用任务的id,假设它是增量的。如果有三台机器运行任务调度。然后只需将id修改为3,并将结果为0、1、2的任务分配给固定的机器。所以不同的机器不会互相干扰(或竞争状况)