当前位置: 首页 > news >正文

三合一静态网站茂名一站式网站建设报价

三合一静态网站,茂名一站式网站建设报价,哪里有软件定制开发公司,国外扁平化风格网站前言 在数字化转型的浪潮中,任务调度成为了后端服务不可或缺的一部分。XXL-JOB 是一个轻量级、分布式的任务调度框架,广泛应用于各种业务场景。达梦数据库(DM),作为一款国内领先的数据库产品,已经被越来越…

前言

在数字化转型的浪潮中,任务调度成为了后端服务不可或缺的一部分。XXL-JOB 是一个轻量级、分布式的任务调度框架,广泛应用于各种业务场景。达梦数据库(DM),作为一款国内领先的数据库产品,已经被越来越多的企业采用。本文将介绍如何将 XXL-JOB 适配到达梦数据库,实现任务调度的国产化支持。

Nacos 配置管理介绍

Nacos 提供了配置管理功能,支持动态配置更新,使得微服务架构中的配置管理更加灵活和高效。

达梦数据库介绍

达梦数据库是一款关系型数据库管理系统,具有高性能、高可用性、易于维护等特点,广泛应用于政府、金融、电信等行业。

环境准备

在开始之前,请确保已经准备好以下环境:

XXL-JOB:下载 XXL-JOB 的最新版本。并构建
达梦数据库:安装并启动达梦数据库。 mysql上的xxl-job库 迁移到达梦数据库上 最好使用传输工具进行传输 避免不必要用的问题
JDK:确保已安装 JDK 1.8 或以上版本。

xxl-job适配人大金仓

特此说明: 当前修改的xxl-job版本 为 2.4.1-SNAPSHOT

源码修改

pom中新增依赖 DmJdbcDriver18 驱动 注意版本

<!-- dameng -->
<dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.3.140</version>
</dependency>
  • 注释掉 原有的MySQL驱动
    在这里插入图片描述

修改xxl-job 数据库连接以及账号密码 还有驱动类

## 注释掉原有的数据库配置
spring.datasource.url=jdbc:dm://dm连接IP:5236/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver

数据库连接 配置没问题的话 应该就可以启动了

问题汇总

Caused by: dm.jdbc.driver.DMException: 第12 行附近出现错误:无效的表或视图名[xxl_job.xxl_job_log]

com.xxl.job.admin.core.thread.JobFailMonitorHelper#start
的41行 提示 xxl_job_log 表不存在
刚开始以为也需要添加库名 ,然后尝试加了 启动依然报错

后续查询资料 是 不支持 `这个符号
解决: 全局替换 xml中的 这个符号即可
示例

<!-- 修改前 -->
<select id="findFailJobLogIds" resultType="long">SELECT idFROM `xxl_job.xxl_job_log`WHERE !((trigger_code in (0, 200)and handle_code = 0)OR(handle_code = 200))AND alarm_status = 0ORDER BY id ASCLIMIT #{pagesize}
</select>
<!-- 修改后  -->
<select id="findFailJobLogIds" resultType="long">SELECT idFROM xxl_job.xxl_job_logWHERE !((trigger_code in (0, 200)and handle_code = 0)OR(handle_code = 200))AND alarm_status = 0ORDER BY id ASCLIMIT #{pagesize}
</select>

后续 全局替换 xml中的 这个符号即可

函数 DATE ADD(unknown . interval)不存在

com.xxl.job.admin.core.thread.JobRegistryHelper#start 66行 报错

							List<Integer> ids = XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().findDead(RegistryConfig.DEAD_TIMEOUT, new Date());

提示 bad SOL grammar 错误:函数 DATE ADD(unknown . interval)不存在
Hint:没有匹配指定名称和参数类型的函数.
您也许需要增加明确的类型转换.

解决- 替换新的实现方式
查询资料说是替换 新的实现方式 尝试多次 均不可

 DATE_ADD(#{nowTime},INTERVAL -#{timeout} SECOND) 为 
date '${nowTime}' - INTERVAL '${timeout} second'

类似的修改 等等

官方的地址说明: ’
date_add 函数若对添加时间间隔的表达式进行求值,可采用 DM 的
TIMESTAMPADD 函数进行替代,例子如下:


--MySQL
select DATE_ADD(sysdate(), INTERVAL 1 YEAR);
--2020-07-02 11:24:18
-- DM
select TIMESTAMPADD(SQL_TSI_YEAR, 1,sysdate());
--2020-07-02 11:27:56.000000

直接看终极解决办法 替换现有实现
本质来讲就是需要个工具类 将传入的时间减去一个传入的 秒数 返回修改后的时间

直接在工具类com.xxl.job.core.util.DateUtil 中 添加 如下方法

public static Date addSeconds(final Date date, final int amount) {return add(date, Calendar.SECOND, amount);
}

然后在 com.xxl.job.admin.dao.XxlJobRegistryDao 新增两个dao的方法

public List<Integer> findDeadByTime(@Param("nowTime") Date nowTime);public List<XxlJobRegistry> findAllByTime(@Param("nowTime") Date nowTime);

在mapper文件 XxlJobRegistryMapper.xml 中 新增两个方法对应的sql 内容

<select id="findDeadByTime" resultType="java.lang.Integer">SELECT <include refid="Base_Column_List" />FROM xxl_job.xxl_job_registry AS tWHERE t.update_time <![CDATA[ < ]]> #{nowTime}
</select><!-- 2024年09月12日16:26:10 新修改  
注意 resultMap 是 map映射 XxlJobRegistry 而不是一个实体类 
否则导致结果集部分参数获取不到-->
<select id="findAllByTime" resultMap="XxlJobRegistry">SELECT <include refid="Base_Column_List" />FROM xxl_job.xxl_job_registry AS tWHERE t.update_time > #{nowTime}
</select>

最后在 com.xxl.job.admin.core.thread.JobRegistryHelper#registryMonitorThread 文件中替换实现

//List<Integer> ids = XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().findDead(RegistryConfig.DEAD_TIMEOUT, new Date());
//新增修改后的内容
Date beforeDate = DateUtil.addSeconds(new Date(), -1 * RegistryConfig.DEAD_TIMEOUT);
List<Integer> ids = XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().findDeadByTime(beforeDate);
if (ids!=null && ids.size()>0) {XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().removeDead(ids);
}// fresh online address (admin/executor)
HashMap<String, List<String>> appAddressMap = new HashMap<String, List<String>>();
//List<XxlJobRegistry> list = XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().findAll(RegistryConfig.DEAD_TIMEOUT, new Date());
//新增的内容
Date nowDate = DateUtil.addSeconds(new Date(), -1 * RegistryConfig.DEAD_TIMEOUT);
List<XxlJobRegistry> list = XxlJobAdminConfig.getAdminConfig().getXxlJobRegistryDao().findAllByTime(nowDate);

com.xxl.job.admin.controller.JobGroupController#findRegistryByAppName 方法中 修改为使用 findAllByTime 方法

Date nowDate = DateUtil.addSeconds(new Date(), -1 * RegistryConfig.DEAD_TIMEOUT);
List<XxlJobRegistry> list = xxlJobRegistryDao.findAllByTime(nowDate);

注意事项

注意dm Caused by: dm.jdbc.driver.DMException: 第12 行附近出现错误:无效的表或视图名[xxl_job.xxl_job_log]

这个报错 不一定是这个表不存在 可能具体的位置的SQL语法有问题 导致这个报错

驱动连接问题

使用正确的驱动 或者直接去dm的安装目录下查找需要使用的版本 再使用jdk8的时候 可以使用DmJdbcDriver18
在这里插入图片描述

*达梦8 JDBC驱动版本说明

  1. DmJdbcDriver16 实现JDBC 4.0标准接口,已在JDK6上验证相关功能
  2. DmJdbcDriver17 实现JDBC 4.1标准接口,已在JDK7上验证相关功能
  3. DmJdbcDriver18 实现JDBC 4.2标准接口,已在JDK8,JDK11,JDK17上验证相关功能

good day!!!

http://www.yayakq.cn/news/474792/

相关文章:

  • 网新网站建设合同卢龙建设银行官网网站
  • 电商品牌授权网站wordpress中国区官方论坛
  • 广西学校网站建设公众号开发者是什么意思
  • seo短视频网页入口引流在线观看网站wordpress 二级域名
  • 网站开发目录规范做电影网站 需要进那些群
  • html5做的篮球网站长沙网页设计公司排名
  • ipad做电影网站网站建设实验报告总结
  • 教学网站开发背景及意义php网站伪静态
  • 游戏网站建设与策划书大学生一个人做网站
  • 家政公司网站的建设阜阳建设工程质量监督局网站
  • cpanel转移网站wordpress文章怎么生成云标签
  • 做网站要注意些什么免费正能量下载软件
  • 江西省住房和城乡建设厅网站专门做水生植物销售网站
  • wordpress模板适合做什么站大连商城网站制作
  • 站长之家whois哈尔滨网站建设费用
  • 济南网站制作*推搜点怎么做网站系统
  • c#网站开发案例源码wordpress多重查询
  • 上海青浦做网站做网站的网络公司
  • 做网站要几个人宝塔linux面板官网
  • 大型网站的建设包括那些内容企业的网站做一个要多少
  • 建设厅网站业务系统板块查成绩wordpress yosat
  • 邯郸哪个公司做网站好ps做分享类网站效果图
  • 扬州天达建设集团有限公司网站深圳网站建设公司哪里有
  • 网址大全123官方网站毛妮卓玛wordpress
  • 站长工具无忧免费编程软件下载
  • 南平网站建设wzjseo湖南门户网站设计公司
  • 网站备案流程2016wordpress 防止机器人注册
  • 迁安建设局网站建设部网站村镇建设
  • 基于html5的电商网站开发协会网站设计方案模板
  • 古玩网站建设意义WordPress商品相册