package tech.powerjob.worker.core.processor.sdk; import tech.powerjob.worker.core.processor.ProcessResult; import tech.powerjob.worker.core.processor.TaskContext; import tech.powerjob.worker.core.processor.TaskResult; import java.util.List; /** * 广播执行处理器,适用于广播执行 * * @author tjq * @since 2020/3/18 */ public interface BroadcastProcessor extends BasicProcessor { /** * 在所有节点广播执行前执行,只会在一台机器执行一次 */ default ProcessResult preProcess(TaskContext context) throws Exception { return new ProcessResult(true); } /** * 在所有节点广播执行完成后执行,只会在一台机器执行一次 */ default ProcessResult postProcess(TaskContext context, List taskResults) throws Exception { return defaultResult(taskResults); } static ProcessResult defaultResult(List taskResults) { long succeed = 0, failed = 0; for (TaskResult ts : taskResults) { if (ts.isSuccess()) { succeed ++ ; }else { failed ++; } } return new ProcessResult(failed == 0, String.format("succeed:%d, failed:%d", succeed, failed)); } }