事务消息主要用在发送方
在connection上加上事务属性, 发送方感知到本地事务执行失败, 需要通知broker将先前已经接收到的消息rollback,不要发给后面的消费者, 满足强一致性的要求
try{
connection.setTx()
doSend(); //本地DB事务
connection.setCommit();
} catch(Excection e){
// 记录没有发送成功
doRollback();
}
broker一旦确认收到消息,消费者的事务处理就与生产者没有关系了, broker进行重试确保消费者一定能够收到消息, 消费者进行消息确认和幂等处理