From 35ad3067307e40b89d3ea8c131ac35c17f62ff1c Mon Sep 17 00:00:00 2001 From: 三个三 <2029364173@qq.com> Date: 星期六, 17 六月 2023 23:13:02 +0800 Subject: [PATCH] Merge branch '5.X' of gitee.com:dromara/RuoYi-Vue-Plus into JustAuth --- ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/MapProcessorDemo.java | 93 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 93 insertions(+), 0 deletions(-) diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/MapProcessorDemo.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/MapProcessorDemo.java new file mode 100644 index 0000000..720d333 --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/processors/MapProcessorDemo.java @@ -0,0 +1,93 @@ +package org.dromara.job.processors; + +import com.google.common.collect.Lists; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.dromara.common.json.utils.JsonUtils; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.MapProcessor; + +import java.util.List; +import java.util.concurrent.ThreadLocalRandom; + +/** + * Map澶勭悊鍣� 绀轰緥 + * + * @author tjq + * @since 2020/4/18 + */ +@Component +public class MapProcessorDemo implements MapProcessor { + + + /** + * 姣忎竴鎵瑰彂閫佷换鍔″ぇ灏� + */ + private static final int BATCH_SIZE = 100; + /** + * 鍙戦�佺殑鎵规 + */ + private static final int BATCH_NUM = 5; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + + log.info("============== MapProcessorDemo#process =============="); + log.info("isRootTask:{}", isRootTask()); + log.info("taskContext:{}", JsonUtils.toJsonString(context)); + + if (isRootTask()) { + log.info("==== MAP ===="); + List<SubTask> subTasks = Lists.newLinkedList(); + for (int j = 0; j < BATCH_NUM; j++) { + SubTask subTask = new SubTask(); + subTask.siteId = j; + subTask.itemIds = Lists.newLinkedList(); + subTasks.add(subTask); + for (int i = 0; i < BATCH_SIZE; i++) { + subTask.itemIds.add(i + j * 100); + } + } + map(subTasks, "MAP_TEST_TASK"); + return new ProcessResult(true, "map successfully"); + } else { + + log.info("==== PROCESS ===="); + SubTask subTask = (SubTask) context.getSubTask(); + for (Integer itemId : subTask.getItemIds()) { + if (Thread.interrupted()) { + // 浠诲姟琚腑鏂� + log.info("job has been stop! so stop to process subTask: {} => {}", subTask.getSiteId(), itemId); + break; + } + log.info("processing subTask: {} => {}", subTask.getSiteId(), itemId); + int max = Integer.MAX_VALUE >> 7; + for (int i = 0; ; i++) { + // 妯℃嫙鑰楁椂鎿嶄綔 + if (i > max) { + break; + } + } + } + // 娴嬭瘯鍦� Map 浠诲姟涓拷鍔犱笂涓嬫枃 + context.getWorkflowContext().appendData2WfContext("Yasuo", "A sword's poor company for a long road."); + boolean b = ThreadLocalRandom.current().nextBoolean(); + if (context.getCurrentRetryTimes() >= 1) { + // 閲嶈瘯鐨勮瘽涓�瀹氫細鎴愬姛 + b = true; + } + return new ProcessResult(b, "RESULT:" + b); + } + } + + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class SubTask { + private Integer siteId; + private List<Integer> itemIds; + } +} -- Gitblit v1.9.3