金蝶国产化中间件和人大金仓数据库

文章介绍了如何配置金蝶Apusic分布式消息队列,包括RabbitMQ的连接设置以及SpringBoot的依赖。同时,提到了Apusic内存数据缓存的Redis配置和LUA脚本执行的兼容性问题。文章还讨论了KingBaseES数据库的使用,包括其与MySQL的语法差异,以及数据库迁移时需要注意的事项。
摘要由CSDN通过智能技术生成

金蝶Apusic分布式消息队列

不需要配置用户名密码

  rabbitmq:
    enable: true
    host: 192.168.1.233
    port: 5672
    <!-- Spring Boot RabbitMQ 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
            <version>2.1.18.RELEASE</version>
        </dependency>
3 代码配置,“vhost”虚拟机名称需要登录MQ界面新建

通过在 ADMQ 代理上引入 AMQP 协议处理程序,为 ADMQ 带来了原生的 AMQP 协议支持。

 @Bean
    public ConnectionFactory connectionFactory(){
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host,port);
        connectionFactory.setVirtualHost("vhost");
        connectionFactory.setPublisherConfirms(true); //设置发送消息失败重试
        connectionFactory.setChannelCacheSize(100);//解决多线程发送消息
        return connectionFactory;
    }

Apusic内存数据缓存

 redis:
    ## Redis数据库索引(默认为0)
    database: 0
    ## Redis服务器地址
    host: 192.168.1.9
    ## Redis服务器连接端口
    port: 6359
    ## Redis服务器连接密码(默认为空)
    ssl: false #启用SSL终端识别
    password: 
    timeout: 5000ms
    jedis:
      pool:
        ## 连接池最大连接数(使用负值表示没有限制)
        max-active: 8
        ## 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1ms
        ## 连接池中的最大空闲连接
        max-idle: 8
        ## 连接池中的最小空闲连接
        min-idle:

依赖包,其实还是springboot-redis那套

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
   <version>2.7.2</version>
   <exclusions>
      <exclusion>
         <groupId>io.lettuce</groupId>
         <artifactId>lettuce-core</artifactId>
      </exclusion>
   </exclusions>
</dependency>
<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
</dependency>

执行LUA脚本问题,需要我们本地代码进行适配和改造

这个兼容性都比较差,需要反复测试


    public static <T> T execute(StringRedisTemplate stringRedisTemplate,final RedisScript<T> script, final List<String> keys, final Object[] args) {
        return stringRedisTemplate.execute(new RedisCallback<T>() {
            @Override
            public T doInRedis(RedisConnection connection) throws DataAccessException {
                Object nativeConnection = connection.getNativeConnection();
                // redis序列化key、value、lua脚本
                RedisSerializer keySerializer = stringRedisTemplate.getKeySerializer();
                RedisSerializer valueSerializer = stringRedisTemplate.getValueSerializer();
                RedisSerializer<String> stringSerializer = stringRedisTemplate.getStringSerializer();

                List<byte[]> keys_ByteArr = new ArrayList<byte[]>(keys.size());
                List<byte[]> args_ByteArr = new ArrayList<byte[]>(args.length);

                for (int i = 0; i < keys.size(); i++) {
                    keys_ByteArr.add(keySerializer.serialize(keys.get(i)));
                }
                for (int j = 0; j < args.length; j++) {
                    args_ByteArr.add(valueSerializer.serialize(args[j]));
                }
                byte[] scriptByte = stringSerializer.serialize(script.getScriptAsString());
                if (nativeConnection instanceof JedisCluster) {
                    return (T) ((JedisCluster) nativeConnection).eval(scriptByte, keys_ByteArr, args_ByteArr);
                }
                // 单点
                else if (nativeConnection instanceof Jedis) {
                    return (T) ((Jedis) nativeConnection).eval(scriptByte, keys_ByteArr, args_ByteArr);
                }
                // 单机模式
                return (T) ((Jedis) nativeConnection).eval(scriptByte, keys_ByteArr, args_ByteArr);
            }
        });
    }

人大金仓KingBaseES 数据库,底层其实是pgsql

<!--KingBase-->
<dependency>
    <groupId>com.kingbase8</groupId>
    <artifactId>kingbase8</artifactId>
    <version>8.6.0</version>
</dependency>

手动下载驱动包,地址https://www.kingbase.com.cn/qd/index.htm

2 配置数据库地址, 需要注意脚本方言为: helperDialect: postgresql
############## 数据源
master:
  datasource:
    url: jdbc:kingbase8://192.168.1.9:54321/hoe_hospital?useUnicode=true&allowMultiQueries=true&characterEncoding=utf8&useSSL=false
    username: J7EUl2ZBPKM=
    password: Soxks8s/VLiHR9Jo0gssJg==
    driverClassName: com.kingbase8.Driver
    validationQuery: select 1
    testOnBorrow: true
    testWhileIdle: true
## mappers 多个接口时逗号隔开
mapper:
  mappers: com.moan.hoe.base.config.mybatis.MyMapper
  not-empty: false
  identity: kingbase8
pagehelper:
  page-size-zero: true
  helperDialect: postgresql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

SQL语法问题,需要在业务中慢慢排查,关键字和内置函数都不太友好

1>  当mysql某个字段的类型为 tinyint时,且长度为1,迁移到金仓时,自动转换为 true 或 false;(需要讲tinyint改为2,才可以保持一样的数值,对应类型为Integer);
tbl_menu_element   修改 is_deleted 为boolean
tbl_menu 修改 is_disable 为boolean

2>  mysql FIELD()函数替换掉 decode()

3> 数据库初始化大小写不区分,

4> 别名不能加mysql自动生成斜单引号,中文别明不能加单引号;

5> mysql的函数和存储过程无法直接兼容kingBaseES库

6> mysql的group_concat函数 kingbaseEs——string_agg(expression,delimiter)    输入值连接成一个串,用定界符分隔

7> 命名需要加 as 关键字;select name,或者t.name 关键字都不需要加`` 上单引号,否则报错 (2)传参数时,数据加是什么类型,参数就一定要相同,否则报错, boolean 不能写成"0"或者"1" 这种传参

8>  实体类的自增主键问题,去掉    //@GeneratedValue(strategy = GenerationType.IDENTITY)  只需保留@ID注解,需要在插入的时候给ID主键赋值,去掉自增注解并未解决,需要升级mybaits-plus插件最新版本

9> 自定义SQL函数或者存储过程都需要重写 

要先创建模式,相当于创建数据库,跨库查询的话,一定把所有模式创建到主模式下,才可以进行跨库查询表,

登录web管理界面 , 新建源数据 ,需要配置参数的可以在后面加 如tinyntlisBit=false 可以区分boolean类型

主要是新建源 数据到目标数据,再创建一个任务,启动任务后去执行两边的数据对比和导入

服务器

操作系统是: 统信uos

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值