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

金蝶Apusic分布式消息队列

不需要配置用户名密码

  rabbitmq:
    enable: true
    host: 192.168.1.233
    port: 5672
    
        
            org.springframework.boot
            spring-boot-starter-amqp
            2.1.18.RELEASE
        
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那套


   org.springframework.boot
   spring-boot-starter-data-redis
   2.7.2
   
      
         io.lettuce
         lettuce-core
      
   


   redis.clients
   jedis

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

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


    public static  T execute(StringRedisTemplate stringRedisTemplate,final RedisScript script, final List keys, final Object[] args) {
        return stringRedisTemplate.execute(new RedisCallback() {
            @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 stringSerializer = stringRedisTemplate.getStringSerializer();

                List keys_ByteArr = new ArrayList(keys.size());
                List args_ByteArr = new ArrayList(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



    com.kingbase8
    kingbase8
    8.6.0

手动下载驱动包,地址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
金蝶国产化中间件和人大金仓数据库_第1张图片

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函数或者存储过程都需要重写 

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

金蝶国产化中间件和人大金仓数据库_第2张图片

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

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

金蝶国产化中间件和人大金仓数据库_第3张图片

服务器

金蝶国产化中间件和人大金仓数据库_第4张图片

金蝶国产化中间件和人大金仓数据库_第5张图片

操作系统是: 统信uos

你可能感兴趣的:(springboot,java,redis)