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 "发送成功";
}
相关推荐
@阿秋14 分钟前
《RabbitMQ篇》基本概念介绍
rabbitmq
wclass-zhengge1 小时前
RabbitMQ篇(基本介绍)
分布式·rabbitmq
花千树-0109 小时前
分布式选举 - Paxos、Zab 和 Raft 选举协议的逐步优化与对比分析
分布式
Dylanioucn9 小时前
【分布式微服务云原生】OpenFeign:微服务通信的瑞士军刀
分布式·微服务·云原生
Dylanioucn13 小时前
【分布式微服务云原生】消息队列全解析:原理、应用场景与主流MQ对比
分布式·微服务·云原生
@技术无疆13 小时前
【Go语言】Ergo:构建分布式系统的现代化 Erlang 框架
开发语言·分布式·后端·golang·开源·erlang·开源软件
鸡c14 小时前
rabbitMq------信道管理模块
服务器·网络·rabbitmq
。。。。。。。。~14 小时前
RabbitMQ的高级特性-延迟队列
分布式·rabbitmq
小笨猪-15 小时前
Redis-哨兵
数据库·redis·分布式·缓存·sentinel