From 05c944557e961dac707f99f466bef80c075b414f Mon Sep 17 00:00:00 2001 From: ploat <18217703980@163.com> Date: Mon, 2 Sep 2024 03:37:28 +0000 Subject: [PATCH] =?UTF-8?q?!4=20=E6=8F=90=E4=BA=A4=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=89=93=E5=8D=B0demo=20*=20=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=BC=82=E6=AD=A5=E6=97=A5=E5=BF=97=E6=89=93=E5=8D=B0?= =?UTF-8?q?demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/TestSyncLogPrintExecutor.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/main/java/com/example/snailjob/job/TestSyncLogPrintExecutor.java diff --git a/src/main/java/com/example/snailjob/job/TestSyncLogPrintExecutor.java b/src/main/java/com/example/snailjob/job/TestSyncLogPrintExecutor.java new file mode 100644 index 0000000..07b4a12 --- /dev/null +++ b/src/main/java/com/example/snailjob/job/TestSyncLogPrintExecutor.java @@ -0,0 +1,53 @@ +package com.example.snailjob.job; + +import com.aizuda.snailjob.client.common.log.report.LogMeta; +import com.aizuda.snailjob.client.common.log.support.SnailJobLogManager; +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.job.core.executor.JobContextManager; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.aizuda.snailjob.common.core.model.JobContext; +import com.aizuda.snailjob.common.log.SnailJobLog; +import com.aizuda.snailjob.common.log.enums.LogTypeEnum; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.concurrent.TimeUnit; + +/** + * @author PT + * @date 2024-09-02 上午10:50 + * @Description + * 线程异步情况下日志打印,场景:定时调用接口更新数据, + * 由于数据量每天大小不一致,无法界定执行时间,所以需要异步执行,但是异步执行时日志也需要进行打印 + */ +@Slf4j +@Component +public class TestSyncLogPrintExecutor { + + @JobExecutor(name = "TestSyncLogPrintExecutor") + public ExecuteResult jobExecute(JobArgs jobArgs) { + JobContext jobContext = JobContextManager.getJobContext(); + LogMeta logMeta = SnailJobLogManager.getLogMeta(); + LogTypeEnum logType = SnailJobLogManager.getLogType(); + + //此处简单模拟开启新线程执行,实际生产建议使用线程池执行 + new Thread(() -> { + JobContextManager.setJobContext(jobContext); + SnailJobLogManager.setLogMeta(logMeta); + SnailJobLogManager.setLogType(logType); + //执行业务 + doSomething(); + }); + return ExecuteResult.success(); + } + + private void doSomething() { + try { + TimeUnit.SECONDS.sleep(10); + SnailJobLog.REMOTE.info("测试异步打印"); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } +}