package com.zy.core.task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class MainProcessTaskSubmitter { private static final long DEFAULT_SLOW_LOG_THRESHOLD_MS = 1000L; @Autowired private MainProcessAsyncTaskScheduler mainProcessAsyncTaskScheduler; public boolean submitSerialTask(String laneName, String taskName, long minIntervalMs, Runnable task) { return mainProcessAsyncTaskScheduler.submit( laneName, taskName, minIntervalMs, DEFAULT_SLOW_LOG_THRESHOLD_MS, task ); } public boolean submitSerialTask(MainProcessLane lane, String taskName, long minIntervalMs, Runnable task) { if (lane == null) { return false; } return submitSerialTask(lane.laneName(), taskName, minIntervalMs, task); } public boolean submitKeyedSerialTask(String lanePrefix, Object laneKey, String taskName, long minIntervalMs, Runnable task) { if (laneKey == null) { return false; } return submitSerialTask(lanePrefix + laneKey, taskName, minIntervalMs, task); } public boolean submitKeyedSerialTask(MainProcessLane lane, Object laneKey, String taskName, long minIntervalMs, Runnable task) { if (lane == null) { return false; } String laneName = lane.keyedLaneName(laneKey); if (laneName == null) { return false; } return submitSerialTask(laneName, taskName, minIntervalMs, task); } }