老师,您好!课程很好,但有几个细节新人提问:
1、关于transMessageService.messageSendReady(messageId),是在Ordercreate后创建,个人理解是否应该把创建订单、发送消息落库放在一个事务里面,毕竟重新投递都要以这个落地数据为依据,如果落库失败,将不会有任何重试机制。
2、异步ack的时候,判断条件为 if ( ack && null != correlationData) 然后执行messageSendSuccess(messageId),如果此时落库失败,那么messageid还会存在于数据库中,定时轮询就会判定为投递交换机失败,会从新投递,这里是否会造成重复投递?
3、定时轮询是将所有的数据进行重新投递,如果某一时刻,正好有个新消息进来,并在ack删除之前进行了一次定时轮询,是否会造成此条新消息重复投递,如何避免?
也可能我理解有问题,请老师帮忙解答。