diff --git a/docker-compose.yml b/docker-compose-rocketmq.yml
similarity index 100%
rename from docker-compose.yml
rename to docker-compose-rocketmq.yml
diff --git a/docker-compose-xxljob.yml b/docker-compose-xxljob.yml
new file mode 100644
index 0000000..7b6afde
--- /dev/null
+++ b/docker-compose-xxljob.yml
@@ -0,0 +1,46 @@
+services:
+ # MySQL 服务(无数据持久化)
+ mysql:
+ image: mysql:8.0
+ container_name: xxl-job-mysql
+ ports:
+ - "3307:3306"
+ environment:
+ - MYSQL_ROOT_PASSWORD=123456
+ - MYSQL_DATABASE=xxl_job
+ - MYSQL_ROOT_HOST=%
+ - TZ=Asia/Shanghai
+ command: --default-authentication-plugin=mysql_native_password
+ restart: always
+ networks:
+ - xxl-job-network
+ healthcheck:
+ test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-p123456"]
+ interval: 5s
+ timeout: 3s
+ retries: 10
+ start_period: 10s
+
+ # XXL-Job 调度中心(核心,无持久化)
+ xxl-job-admin:
+ image: xuxueli/xxl-job-admin:2.4.1
+ container_name: xxl-job-admin
+ ports:
+ - "8085:8080"
+ environment:
+ - TZ=Asia/Shanghai
+ - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
+ - SPRING_DATASOURCE_USERNAME=root
+ - SPRING_DATASOURCE_PASSWORD=123456
+ - XXL_JOB_ACCESS_TOKEN=default_token
+ - XXL_JOB_LOG_RETENTION_DAYS=30
+ depends_on:
+ mysql:
+ condition: service_healthy
+ restart: always
+ networks:
+ - xxl-job-network
+
+networks:
+ xxl-job-network:
+ driver: bridge
\ No newline at end of file
diff --git a/order-service/pom.xml b/order-service/pom.xml
index a570083..628e6f8 100644
--- a/order-service/pom.xml
+++ b/order-service/pom.xml
@@ -82,5 +82,9 @@
org.apache.rocketmq
rocketmq-spring-boot-starter
+
+ com.xuxueli
+ xxl-job-core
+
diff --git a/order-service/src/main/java/cn/mayiming/Config/XxlJobConfig.java b/order-service/src/main/java/cn/mayiming/Config/XxlJobConfig.java
new file mode 100644
index 0000000..2af56fc
--- /dev/null
+++ b/order-service/src/main/java/cn/mayiming/Config/XxlJobConfig.java
@@ -0,0 +1,33 @@
+package cn.mayiming.Config;
+
+import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class XxlJobConfig {
+
+ @Value("${xxl.job.admin.addresses}")
+ private String adminAddresses;
+
+ @Value("${xxl.job.executor.appname}")
+ private String appname;
+
+ @Value("${xxl.job.accessToken}")
+ private String accessToken;
+
+ @Value("${xxl.job.executor.port}")
+ private int port;
+
+ // 初始化XXL-Job执行器
+ @Bean
+ public XxlJobSpringExecutor xxlJobExecutor() {
+ XxlJobSpringExecutor executor = new XxlJobSpringExecutor();
+ executor.setAdminAddresses(adminAddresses);
+ executor.setAppname(appname);
+ executor.setAccessToken(accessToken);
+ executor.setPort(port);
+ return executor;
+ }
+}
\ No newline at end of file
diff --git a/order-service/src/main/java/cn/mayiming/JobHandler/executorDemo.java b/order-service/src/main/java/cn/mayiming/JobHandler/executorDemo.java
new file mode 100644
index 0000000..ab3e5e1
--- /dev/null
+++ b/order-service/src/main/java/cn/mayiming/JobHandler/executorDemo.java
@@ -0,0 +1,15 @@
+package cn.mayiming.JobHandler;
+
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.springframework.stereotype.Component;
+
+@Component
+public class executorDemo {
+ @XxlJob("demoJobHandler")
+ public void demoJobHandler() {
+ // 这里写你的业务逻辑,比如:
+ System.out.println("XXL-Job 执行器任务执行成功!当前时间:" + System.currentTimeMillis());
+
+ // 示例:定时订单超时取消、数据同步、日志清理等都可以写在这里
+ }
+}
diff --git a/order-service/src/main/resources/application.yml b/order-service/src/main/resources/application.yml
index 99082fe..2c03415 100644
--- a/order-service/src/main/resources/application.yml
+++ b/order-service/src/main/resources/application.yml
@@ -52,4 +52,13 @@ rocketmq:
# 消息最大长度(默认4M)
max-message-size: 4194304
# 压缩消息阈值(超过4K自动压缩)
- compress-message-body-threshold: 4096
\ No newline at end of file
+ compress-message-body-threshold: 4096
+
+xxl:
+ job:
+ admin:
+ addresses: http://localhost:8085/xxl-job-admin # 调度中心访问地址(端口按你实际配置的来)
+ executor:
+ appname: xxl-job-executor-demo # 必须和控制台创建的执行器AppName完全一致!
+ port: 9999 # 执行器端口(默认9999,可改)
+ accessToken: default_token # 和调度中心的token一致(默认default_token)
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 743029a..c913cdc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -113,6 +113,11 @@
rocketmq-spring-boot-starter
2.3.4
+
+ com.xuxueli
+ xxl-job-core
+ 2.4.1
+