can't get index from columnLabel[数据库列名]

  • mybatis中自定义查询语句使用select *,会有几率出现该异常场景,禁止使用select *,使用哪些列,查询指定列名

本地调试其他环境

feignclient调用三方接口时404问题

  • 因feign默认实现feign.httpclient.ApacheHttpClient存在问题,使用feign.httpclient.enabled=false配置关闭,使用client default execute即可

Rabbit 使用限制及延时场景下问题

  • 目前业务使用阿里云Rabbit,自建Rabbit与云Rabbit有所不同
    • 阿里云RabbitMQ,消息延时入死信场景,expiration 参数最大支持24小时,涉及延时场景需要配合job补偿,处理当天需要执行的内容(保证入队时延时时间不超过24小时)
    • rabbitmq重试策略:因阿里云版本如指定时间内(5分钟/十分钟/半小时,不同版本不同时间)未收到ack应答,则重试一次,累计10次,需消费逻辑务必支持幂等
    • 死信逻辑不同:自建Rabbit死信消息延迟需依赖rabbitmq-delayed-message-exchange(延时插件),详情请参考https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases
    • 重试逻辑不同:自建为客户端控制重试,阿里云版本超时时间客户端无法控制,超时重试企业版(5分钟),专业版(60s),铂金版(30分钟),需保证消费逻辑幂等性
    • 具体限制参考 https://help.aliyun.com/document_detail/101627.htm?spm=a2c4g.299123.0.0.63941a2ei0WRUU#concept-101627-zh

apollo服务配置无法覆盖公共配置

  • application.properties文件中如果apollo://application(服务应用配置)配置覆盖公共配置,需把apollo://application放于spring.config.import的value最后位置
    • 例如:spring.config.import=apollo://common.nacos,apollo://common.tomcat,apollo://common.db,apollo://application(最后位置)

服务中使用主库查询的方法,用于时效性较强的逻辑,但避免所有业务都使用主库,以下为查询主库的两种方式

  • Service层方法添加事务注解@Transactional(rollbackFor = Exception.class),原则上如果没有增删改操作,不允许添加事务,且事务要控制到最小单元,避免提交大事务
  • 使用sharding jdbc 提供能力添加主库,需保证数据库连接支持主从

     try(HintManager hintManager=HintManager.getInstance()) {
         hintManager.setWriteRouteOnly(); 
         //或者 hintManager.setDataSourceName("gotoneUserCenterMaster");
         //gotoneUserCenterMaster为spring.shardingsphere.rules.readwrite-splitting.data-sources.gotoneUserCenterMasterSlave.props.write-data-source-name=gotoneUserCenterMaster
         MerchantMember merchantMember =merchantMemberMapper.selectById(id);
       }
    

    MYSQL Varchar与INT或者Long比较时会产生截断或者隐式转换浮点类型比较的问题,禁止在MYSQL语句中使用数字与字符串比较

     SELECT "1000200000006609400" =1000200000006609441   true
     SELECT "10002ABC" =10002                            true
    

    线上非页面展示场景下,使用mybatis分页接口count查询慢的问题处理

    非必要场景下,类似导出场景或数据处理场景下,使用nextId方式获取分页数据,例如:第一页使用id>0获取10条,第二页使用第一页第十条id作为nextId,第二页使用id>nextid获取,以此类推,直至数据行获取<=0,则数据获取完成!

results matching ""

    No results matching ""