定时任务xxl-job国产化改造,适配磐维数据库(PostgreSQL)

前言

因公司要求系统需要全面国产化改造,其中也涉及到定时任务xxl-job的改造。

使用的xxl-job版本为:2.5.0

一、修改配置

1、修改pom.xml,引入postgresql组件

XML 复制代码
+               <dependency>
+                       <groupId>org.postgresql</groupId>
+                       <artifactId>postgresql</artifactId>
+                       <version>42.7.4</version>
+               </dependency>

2、修改application,删除mysql配置,增加postgresql配置

XML 复制代码
-### xxl-job, datasource
-spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
-spring.datasource.username=root
-spring.datasource.password=root_pwd
-spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-
 ### datasource-pool
 spring.datasource.type=com.zaxxer.hikari.HikariDataSource
 spring.datasource.hikari.minimum-idle=10
@@ -40,6 +37,7 @@ spring.datasource.hikari.max-lifetime=900000
 spring.datasource.hikari.connection-timeout=10000
 spring.datasource.hikari.connection-test-query=SELECT 1
 spring.datasource.hikari.validation-timeout=1000
+# spring.datasource.hikari.schema=xxl_job

二、修改SQL,适配postgresql

1、文件路径:xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml

XML 复制代码
-               INSERT INTO xxl_job_group ( `app_name`, `title`, `address_type`, `address_list`, `update_time`)
+               INSERT INTO xxl_job_group ( app_name, title, address_type, address_list, update_time)
XML 复制代码
-               SET `app_name` = #{appname},
-                       `title` = #{title},
-                       `address_type` = #{addressType},
-                       `address_list` = #{addressList},
-                       `update_time` = #{updateTime}
+               SET app_name = #{appname},
+                       title = #{title},
+                       address_type = #{addressType},
+                       address_list = #{addressList},
+                       update_time = #{updateTime}

2、文件路径:xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml

XML 复制代码
        <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogGlue" useGeneratedKeys="true" keyProperty="id" >
                INSERT INTO xxl_job_logglue (
-                       `job_id`,
-                       `glue_type`,
-                       `glue_source`,
-                       `glue_remark`,
-                       `add_time`,
-                       `update_time`
+                       job_id,^M
+                       glue_type,^M
+                       glue_source,^M
+                       glue_remark,^M
+                       add_time, ^M
+                       update_time^M
                ) VALUES (
                        #{jobId},
                        #{glueType},
XML 复制代码
                WHERE id NOT in(
                        SELECT id FROM(
                                SELECT id FROM xxl_job_logglue
-                               WHERE `job_id` = #{jobId}
+                               WHERE job_id = #{jobId}^M
                                ORDER BY update_time desc
                                LIMIT 0, #{limit}
                        ) t1
-               ) AND `job_id` = #{jobId}
+               ) AND job_id = #{jobId}
XML 复制代码
        <delete id="deleteByJobId" parameterType="java.lang.Integer" >
                DELETE FROM xxl_job_logglue
-               WHERE `job_id` = #{jobId}
+               WHERE job_id = #{jobId}^M
        </delete>

3、xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml

XML 复制代码
        <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLog" useGeneratedKeys="true" keyProperty="id" >
                INSERT INTO xxl_job_log (
-                       `job_group`,
-                       `job_id`,
-                       `trigger_time`,
-                       `trigger_code`,
-                       `handle_code`
+                       job_group,
+                       job_id,
+                       trigger_time,
+                       trigger_code,
+                       handle_code
XML 复制代码
        <update id="updateTriggerInfo" >
                UPDATE xxl_job_log
                SET
-                       `trigger_time`= #{triggerTime},
-                       `trigger_code`= #{triggerCode},
-                       `trigger_msg`= #{triggerMsg},
-                       `executor_address`= #{executorAddress},
-                       `executor_handler`=#{executorHandler},
-                       `executor_param`= #{executorParam},
-                       `executor_sharding_param`= #{executorShardingParam},
-                       `executor_fail_retry_count`= #{executorFailRetryCount}
-               WHERE `id`= #{id}
+                       trigger_time= #{triggerTime},
+                       trigger_code= #{triggerCode},
+                       trigger_msg= #{triggerMsg},
+                       executor_address= #{executorAddress},
+                       executor_handler=#{executorHandler},
+                       executor_param= #{executorParam},
+                       executor_sharding_param= #{executorShardingParam},
+                       executor_fail_retry_count= #{executorFailRetryCount}
+               WHERE id= #{id}
        </update>
XML 复制代码
        <update id="updateHandleInfo">
                UPDATE xxl_job_log
                SET
-                       `handle_time`= #{handleTime},
-                       `handle_code`= #{handleCode},
-                       `handle_msg`= #{handleMsg}
-               WHERE `id`= #{id}
+                       handle_time= #{handleTime},
+                       handle_code= #{handleCode},
+                       handle_msg= #{handleMsg}
+               WHERE id= #{id}
        </update>
XML 复制代码
        <select id="findFailJobLogIds" resultType="long" >
-               SELECT id FROM `xxl_job_log`
-               WHERE !(
+               SELECT id FROM xxl_job_log
+               WHERE NOT(
                        (trigger_code in (0, 200) and handle_code = 0)
                        OR
                        (handle_code = 200)
                )
-               AND `alarm_status` = 0
+               AND alarm_status = 0
                ORDER BY id ASC
                LIMIT #{pagesize}
        </select>
XML 复制代码
        <update id="updateAlarmStatus" >
                UPDATE xxl_job_log
                SET
-                       `alarm_status` = #{newAlarmStatus}
-               WHERE `id`= #{logId} AND `alarm_status` = #{oldAlarmStatus}
+                       alarm_status = #{newAlarmStatus}
+               WHERE id= #{logId} AND alarm_status = #{oldAlarmStatus}
        </update>

4、xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml

XML 复制代码
        <insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobLogReport" useGeneratedKeys="true" keyProperty="id" >
                INSERT INTO xxl_job_log_report (
-                       `trigger_day`,
-                       `running_count`,
-                       `suc_count`,
-                       `fail_count`
+                       trigger_day,
+                       running_count,
+                       suc_count,
+                       fail_count
                ) VALUES (
                        #{triggerDay},
                        #{runningCount},
XML 复制代码
        <update id="update" >
         UPDATE xxl_job_log_report
-        SET `running_count` = #{runningCount},
-               `suc_count` = #{sucCount},
-               `fail_count` = #{failCount}
-        WHERE `trigger_day` = #{triggerDay}
+        SET running_count = #{runningCount},
+               suc_count = #{sucCount},
+               fail_count = #{failCount}
+        WHERE trigger_day = #{triggerDay}
     </update>

5、xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml

XML 复制代码
        <select id="findDead" parameterType="java.util.HashMap" resultType="java.lang.Integer" >
                SELECT t.id
                FROM xxl_job_registry AS t
-               WHERE t.update_time <![CDATA[ < ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)
+               WHERE t.update_time <![CDATA[ < ]]> NOW() - INTERVAL '${timeout} seconds'
        </select>
XML 复制代码
        <select id="findAll" parameterType="java.util.HashMap" resultMap="XxlJobRegistry">
                SELECT <include refid="Base_Column_List" />
                FROM xxl_job_registry AS t
-               WHERE t.update_time <![CDATA[ > ]]> DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND)
+               WHERE t.update_time <![CDATA[ > ]]> NOW() - INTERVAL '${timeout} seconds'
        </select>
XML 复制代码
     <update id="registryUpdate" >
         UPDATE xxl_job_registry
-        SET `update_time` = #{updateTime}
-        WHERE `registry_group` = #{registryGroup}
-          AND `registry_key` = #{registryKey}
-          AND `registry_value` = #{registryValue}
+        SET update_time = #{updateTime}
+        WHERE registry_group = #{registryGroup}
+          AND registry_key = #{registryKey}
+          AND registry_value = #{registryValue}
     </update>
XML 复制代码
     <insert id="registrySave" >
-        INSERT INTO xxl_job_registry( `registry_group` , `registry_key` , `registry_value`, `update_time`)
+        INSERT INTO xxl_job_registry( registry_group , registry_key , registry_value, update_time)
         VALUES( #{registryGroup}  , #{registryKey} , #{registryValue}, #{updateTime})
     </insert>

总结

因为公司要求系统国产化,所以得把定时任务xxl-job改造适配磐维数据库,大体步骤如下。

1、修改配置。

2、修改SQL,适配postgresql。

最后因本人能力有限,有什么不对的地方望各位大佬指出好让我改进,多多包含,谢谢大家。

相关推荐
静思心远1 小时前
ubuntu2x.xx网络不通如何解决
网络·数据库·postgresql
在未来等你1 天前
高级SQL技巧:PostgreSQL高级特性实战指南
sql·postgresql·性能优化·窗口函数·递归查询
Mr.朱鹏2 天前
SQL实战之索引失效案例详解
java·数据库·spring boot·sql·mysql·spring·postgresql
数巨小码人3 天前
PostgreSQL中的权限管理简介
数据库·postgresql
rosemary5124 天前
Ubuntu 20.04 postgresql
linux·ubuntu·postgresql
运维老曾4 天前
PostgreSQL 用户权限与安全管理
数据库·postgresql
伊织code4 天前
macOS 安装 PostgreSQL
数据库·macos·postgresql·gui·安装·客户端·psql
运维老曾4 天前
PostgreSQL 软件升级
数据库·postgresql
运维老曾4 天前
在ubuntu 24安装 postgresql 17 (源码安装)
linux·ubuntu·postgresql
king_harry5 天前
PostgreSQL14 +patroni+etcd+haproxy+keepalived 集群部署指南
postgresql·pg高可用