vvsuperman / coolmq

消息最终一致性方案,基于rabbitmq的分布式事务解决方案
657 stars 310 forks source link

TransactionSender切面的执行顺序问题 #20

Open ijaychang opened 6 years ago

ijaychang commented 6 years ago

TransactionSender这个切面是在Transactional注解指定的切面之前执行的吗? 如果是之前执行的那没问题,如果是之后执行的,那么有问题,当本地业务方法执行成功了,也提交事务了,但rabbitmq的消息没发送到mq server。

vvsuperman commented 6 years ago

around,意思就是前后都有

ijaychang commented 6 years ago

@vvsuperman 前后都有我知道,这样说吧,比如Transactional注解的切面的我叫做A, TransMessage注解的切面我叫做B。 如果是 B开始 -》 A开始-》业务对象业务方法-》A结束-》B结束,是有问题的,消息发送失败,本地事务却已经提交了 如果是 A开始 -》 B开始-》业务对象业务方法-》B结束-》A结束,那是可以的,这样的话万一发送消息失败,也没关系,本地事务是会回滚的

vvsuperman commented 6 years ago

只有一个切面,没有Transactional。可以看下这个:https://segmentfault.com/l/1500000016673126 送点奶粉钱:)