|
|
@@ -10,7 +10,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.util.Assert;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Optional;
|
|
|
|
|
|
@Component
|
|
|
public class ExecQueueService {
|
|
|
@@ -32,19 +34,28 @@ public class ExecQueueService {
|
|
|
* @return
|
|
|
*/
|
|
|
public String add(Map<String, Object> data, int maxTryCount, ExecQueueEvent execQueueEvent) {
|
|
|
+ return this.add(data, maxTryCount, execQueueEvent, null);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public String add(Map<String, Object> data, int maxTryCount, ExecQueueEvent execQueueEvent, Long ttlTime) {
|
|
|
Assert.state(maxTryCount > 0, "最大尝试次数必须大于0");
|
|
|
Assert.notNull(execQueueEvent, "事件不能为空");
|
|
|
|
|
|
final ExecQueue execQueue = new ExecQueue();
|
|
|
execQueue.setData(data);
|
|
|
-// execQueue.setEventClass(eventClass.getName());
|
|
|
|
|
|
+ // 事件
|
|
|
execQueue.setExecQueueEvent(SerializationUtils.serialize(execQueueEvent));
|
|
|
|
|
|
+ // 初始化参数
|
|
|
execQueue.setCurrentTryCount(0);
|
|
|
execQueue.setMaxTryCount(maxTryCount);
|
|
|
execQueue.setStatus(ExecQueue.ExecQueueStatus.Wait);
|
|
|
|
|
|
+ // 设置过期时间
|
|
|
+ Optional.ofNullable(ttlTime).ifPresent(it -> execQueue.setTTL(new Date(System.currentTimeMillis() + it)));
|
|
|
+
|
|
|
// 更新下次执行时间
|
|
|
this.updateNextExecTime(execQueue);
|
|
|
|