被人问到分布式事务,之前学rabbitMQ 的时候学到过rabbitMQ 高级的事务,因为没有用过,所有没有回答好。这里总结一下。
1.单机版事务。
事务的四大特性 ACID
a.原子性
b.一致性
c.隔离性
d.持久性
单机事务可以通过设置事务的隔离级别 参见spring 的事务隔离级别
2.分布式事务(这里用MQ 消息事务来举例)
rabbitMQ
消息事务机制
channel.txSelect
将通道设置为事务模式
channel.txCommit
用于事务提交
channel.txRollback
用于事务回滚
具体代码如下:
1. channel.txSelect();
channel.basicPublish(EXCHANGE_NAME,ROUTING_KEY,MesageProperties.PERSISTENT_TEXT_PLAIN,"transaction message".getBytes());
channel.txCommit();
2. try{
channel.txSelect();
channel.basicPublish(exchange,routingKey,MessageProperties.PERSISTENT_TEXT_PLAIN,msg.getBytes());
int result = 1/0
channel.txCommit();
}catch(Exception e){
e.printStackTrace
channel.txRollback();
}