作业排队和执行机制
问题描述:
在我的web服务中,所有的方法调用都将作业提交给一个队列。基本上这些操作需要很长时间才能执行,所以所有这些操作都将一个Job提交给一个队列并返回一个表示“已提交”的状态。然后,客户端使用其他服务方法继续轮询以检查作业的状态。作业排队和执行机制
目前,我所做的是创建自己的Queue,Job类,这些类是Serializable并将这些作业(即它们的序列化字节流格式)保存到数据库中。因此,一个UpdateLogistics操作只是将一个“UpdateLogisticsJob”队列排队并返回。我写了自己的JobExecutor,每N秒唤醒一次,扫描数据库表中的任何现有作业并执行它们。请注意,作业必须持续存在,因为这些作业必须经历应用程序服务器崩溃。
这是很久以前完成的,我用我的Queues,Jobs,Executors等定制的类。但现在,我想知道有人做过类似的事情吗?特别是,
- 是否有框架可用于此? Spring/Apache等东西
- 任何易于适应/调试并与像Spring这样的库一起玩的框架都很棒。
编辑 - 石英
很抱歉,如果我没有解释更多,石英有利于无状态的工作(和也为一些有状态的作业),但对我来说,关键是非常有状态坚持“作业实例“(不只是工作或任务)。因此,例如executeWorkflow("SUBMIT_LEAVE")
的操作实际上可能会创建5个作业实例,每个实例都具有至少5-10个参数,如userId,accountId等以保存到数据库中。
我正在寻找围绕该地区的一些支持,其中Job实例可以保存到数据库并重新创建等?
答
弹簧批量加石英
我很久以前看过jBPM,但不知道异步连续存在。谢谢 – 2010-05-19 14:33:30