MQ篇

MQ队列命名规范

  1. 业务线_队列的生产者项目名_消费的项目名称_[Q/R/X]_自定义标识
    如 : GDS_WMS_WOS_Q_FORECAST
      对应的Exchange名为:GDS_WMS_WOS_X_FORECAST
      对应的Routing key名为:GDS_WMS_WOS_R_FORECAST
    ;
      对应的死信队列名为:GDS_WMS_WOS_Q_FORECAST_DEAD
      对应的死信Exchange名为:GDS_WMS_WOS_X_FORECAST_DEAD
      对应的死信Routing key名为:GDS_WMS_WOS_R_FORECAST_DEAD
  2. 生产者队列的消息统一通过 [MQ的shovels插件] 转发到消费者队列
  3. 生产者不需要创建死信队列
  4. 消费者队列必须测试一下消息失败是否会进入对应的死信 这,很重要

MQ队列/Exchange 定义规范

  1. [生产者端]需要定义队列+Exchange 并且建立队列和Exchange的绑定关系
    • 队列需要定义:

      durable=true
      exclusive=false, autoDelete=false
      队列创建使用rabbitAdmin.declareQueue(queue); 防止队列窜到别的VH中

    • Exchange 需要定义

      durable=true
      autoDelete=false
      Exchange创建使用rabbitAdmin.declareExchange(exchange);防止队列窜到别的VH中

    • 建立绑定关系

      rabbitAdmin.declareBinding(BindingBuilder.bind(queue).to(exchange).with(“GDS_WMS_WMS_R_TASK_ASYNC_CONSUME”));

例子

阅读更多

待办篇

待办目录

  • [X] 基于Junit5的新测试用例规范
  • [ ] 基于新测试用例的demo
  • [ ] MQ重复消费问题解决
  • [X] 根据请求ID追踪调用链所有日志

系统改造

  • [ ] 新建GDS公用工程,存放Wms与Wos公用代码(暂定)

Redis篇

redis缓存Key规范

  1. Key前缀统一使用常量:
    ConstantsString.RedisConstant.REDIS_CACHE_PREFIX

单元测试篇

关于测试类的规范 (暂定)

  1. 单元测试应该是不依赖于别的单元测试的
  2. 所有单元测试应该都得回滚,如果存在异步处理的情况,应尽可能把主线程与fork线程拆成2个测试类方法进行测试
  3. 每个测试类/测试方法应写上对应的名称@DisplayName
  4. 每个接口,都必须写一个正向测试方法
  5. 关于测试类的类名:测试类与被测试的类的路径需要一致,名字也需要对应,如:
1
2
3
com.fpx.wms.service.impl.InstockServiceImpl
↓对应↓
com.fpx.wms.service.impl.InstockServiceImplTest
  1. 关于测试类的方法名: 方法名尽可能为成功的条件如shouldSuccessAfterPay(),而方法具体用来测试哪个场景的,我们已经使用了@ DisplayName来描述,无须担心
  2. 对于结果,需要适应assert断言输出与结果是否一致(这才能算是一个单元测试)
  3. 断言统一使用AssertJ框架,使用Assertions.assertThat()进行处理

可以参考\gds-parent\gds-wms-parent\gds-wms\src\test\java\com\fpx\gds\wms\service\exceptionhandle\impl在SVN版本为2962时提交的代码为参考

阅读更多

深入理解Java虚拟机-阅读整理


[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/JVM/JVM-Xmind.html

看完《深入理解Java虚拟机》了(好像是教这个名字吧😂),花了小几个月边看边整理,终于呕心沥血地整理完的,书籍作者基于jdk7写的,加入分析对比了一些jdk8的新特性,以及官方文献的引用,因为JVM还是比较底层灰色,难免有些地方可能有误,欢迎指正。

图片很大,需要放大看,实在看不清,可以去github上自取源Xmind文件:点这里跳转
(有一章类结构偷懒没看,自我感觉用处不是很大)

img.png