完成架构设计之后,就开始进入了开发阶段,后续经过联调测试的调整,大概花了两个礼拜的时间,完成了开发和自测,代码已在github开源:https://github.com/caisl/achievement-system.git
单元测试:
@Test
public void finishWelcomeAchievementTest() throws Exception {
OrderEvent orderEvent = new OrderEvent(entityId, customerRegisterIds, AchievementConstant.EventSource
.FROM_H5, AchievementEnum.EventTypeEnum.ORDER_EVENT.getType());
orderEvent.setAction(AchievementEnum.OrderActionEnum.SUBMIT.getCode());
orderEvent.setOrderType(AchievementConstant.OrderType.ORDER_SHOP);
eventClient.publish(orderEvent);
Thread.sleep(5000);
}
自测过程中对于代码进行debug,然后发现怎么都断点进不到事件处理类,为了解决这个问题,还是想了很久,最后发现,是因为单元测试的主线程提前关闭,而消费者线程是异步开启,从队列里面取事件进行消费,加了个Thread.sleep(5000)保证主线程一直处理运行的状态,就可以进入断点了。
上线后观察:
发布上线之后