官网
github:https://github.com/xuxueli/xxl-job
offical-website:http://www.xuxueli.com/xxl-job/
简介
官方说明:XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
Kubernetes方式安装
修改其中<namespace-name>
、<mysql-username>
、<mysql-password>
、<mysql-url>
、<xxl-job-accesstoken>
、<xxl-job-admin-outside-port>
的内容。其中<mysql-username>
、<mysql-password>
、<xxl-job-accesstoken>
的内容需要进行Base64编码;<xxl-job-admin-outside-port>
为XXL-JOB-ADMIN服务向外暴露端口,Kubernetes默认可向外暴露端口范围为30000-32767。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
| ---
kind: Secret apiVersion: v1 metadata: name: secret-xxl-job-admin-server namespace: <namespace-name> labels: app: secret-xxl-job-admin-server data: datasource_username: <mysql-username> datasource_password: <mysql-password> xxl_job_accesstoken: <xxl-job-accesstoken> type: Opaque ---
kind: Service apiVersion: v1 metadata: name: service-xxl-job-admin-server-headless namespace: <namespace-name> labels: app: service-xxl-job-admin-server-headless spec: ports: - protocol: TCP port: 8080 targetPort: 8080 selector: app: xxl-job-admin-server type: ClusterIP clusterIP: None sessionAffinity: ClientIP ---
kind: Service apiVersion: v1 metadata: name: service-xxl-job-admin-server namespace: <namespace-name> labels: app: service-xxl-job-admin-server spec: ports: - protocol: TCP port: 8080 targetPort: 8080 nodePort: <xxl-job-admin-outside-port> selector: app: xxl-job-admin-server type: NodePort sessionAffinity: ClientIP ---
kind: StatefulSet apiVersion: apps/v1 metadata: name: statefulset-xxl-job-admin-server namespace: <namespace-name> labels: app: xxl-job-admin-server spec: serviceName: service-xxl-job-admin-server-headless replicas: 3 selector: matchLabels: app: xxl-job-admin-server updateStrategy: type: RollingUpdate template: metadata: labels: app: xxl-job-admin-server spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - xxl-job-admin-server topologyKey: kubernetes.io/hostname containers: - name: container-xxl-job-admin-server image: 'xuxueli/xxl-job-admin:2.3.0' ports: - containerPort: 8080 protocol: TCP env: - name: SPRING_DATASOURCE_URL value: "<mysql-url>" - name: SPRING_DATASOURCE_USERNAME valueFrom: secretKeyRef: name: secret-xxl-job-admin-server key: datasource_username - name: SPRING_DATASOURCE_PASSWORD valueFrom: secretKeyRef: name: secret-xxl-job-admin-server key: datasource_password - name: XXL_JOB_ACCESSTOKEN valueFrom: secretKeyRef: name: secret-xxl-job-admin-server key: xxl_job_accesstoken livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 120 periodSeconds: 10 readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 10 periodSeconds: 5 imagePullPolicy: IfNotPresent restartPolicy: Always
|
服务访问
直接访问XXL-JOB-ADMIN服务对外的端口,账号密码默认为:admin/123456
访问界面截图:
SpringBoot中使用
1. 引入依赖
注意版本强烈建议和部署的服务版本一致
1 2 3 4 5
| <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>${xxl-job.version}</version> </dependency>
|
2. 修改SpringBoot配置文件(application.yml或application.properties)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ## 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册; xxl.job.admin.addresses = http://<IP:PORT>/xxl-job-admin ## 执行器通讯TOKEN [选填]:非空时启用; xxl.job.accessToken = <xxl-job-accesstoken> # xxl-job执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册 xxl.job.executor.appname = <executor-xxx> ## 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口; xxl.job.executor.port = 9999 ## 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。 xxl.job.executor.address = ## 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务"; xxl.job.executor.ip = ## 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径; xxl.job.executor.logpath = log/xxl-job/jobhandler ## 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能; xxl.job.executor.logretentiondays = 30
|
3. 使用注解@XxlJob("<executor-xxx>")
执行定时任务逻辑
1 2 3 4 5 6 7 8 9
| @Component public class DemoXxlJob {
@XxlJob("<executor-xxx>") public ReturnT<String> demoJobHandler(String param) throws Exception { return ReturnT.SUCCESS; } }
|
(•̀ᴗ•́)و ̑̑
v1.5.2