RabbitMQ的高级特性-事务

事务:RabbitMQ是基于AMQP协议实现的, 该协议实现了事务机制, 因此RabbitMQ也⽀持事务机制. SpringAMQP也提供了对事务相关的操作. RabbitMQ事务允许开发者确保消息的发送和接收是原⼦性的, 要么全部成功, 要么全部失败

配置事务管理器:

java 复制代码
@Bean
public RabbitTemplate rabbitTemplate(CachingConnectionFactory
connectionFactory){
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setChannelTransacted(true);
return rabbitTemplate;
}

注:

  1. 不加 @Transactional , 会发现消息1发送成功

  2. 添加 @Transactional , 消息1和消息2全部发送失败

java 复制代码
@Transactional
@RequestMapping("/send")
public String send(){
rabbitTemplate.convertAndSend("","trans_queue", "trans test 1...");
int a = 5/0;
rabbitTemplate.convertAndSend("","trans_queue", "trans test 2...");
return "发送成功";
}
相关推荐
jakeswang27 分钟前
细说分布式ID
分布式
失散132 小时前
分布式专题——1.2 Redis7核心数据结构
java·数据结构·redis·分布式·架构
王中阳Go2 小时前
头一次见问这么多kafka的问题
分布式·kafka
hong_zc4 小时前
RabbitMQ 确认机制
rabbitmq
boonya4 小时前
Kafka核心原理与常见面试问题解析
分布式·面试·kafka
hong_zc4 小时前
延迟 队列
rabbitmq
KIDAKN5 小时前
RabbitMQ 重试机制 和 TTL
分布式·rabbitmq
JAVA学习通5 小时前
【RabbitMQ】----初识 RabbitMQ
分布式·rabbitmq
KIDAKN6 小时前
RabbitMQ 可靠传输性(包括消息确认, 持久性和发送方确认)
java·rabbitmq·java-rabbitmq
hong_zc6 小时前
RabbitMQ 持久化
rabbitmq