package com.imutil.service; import com.imutil.entity.DistQueue; import java.util.List; /** * 回调分发服务 *

* 从 dist_queue 抢占待分发记录,HTTP 转发业务系统,按回执更新状态。 * * @author imutil */ public interface DispatchService { /** * 抢占一批 pending 记录置为 processing(事务内 FOR UPDATE SKIP LOCKED + lock) * * @param workerName 工作线程标识 * @return 抢占到的记录列表 */ List fetchAndLock(String workerName); /** * 分发单条记录:HTTP 转发 → 回执成功 markDone / 失败重试或死信 */ void dispatch(DistQueue task, String workerName); /** * 巡检:重置超时未回执的 processing 回到 pending(工作线程宕机恢复) * * @return 重置条数 */ int recoverStuck(); }