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 "发送成功";
}
相关推荐
爱吃泡芙的小白白32 分钟前
爬虫学习——使用HTTP服务代理、redis使用、通过Scrapy实现分布式爬取
redis·分布式·爬虫·http代理·学习记录
大新新大浩浩6 小时前
arm64适配系列文章-第六章-arm64环境上rabbitmq-management的部署,构建cluster-operator
rabbitmq·arm
躺不平的理查德7 小时前
General Spark Operations(Spark 基础操作)
大数据·分布式·spark
talle20217 小时前
Zeppelin在spark环境导出dataframe
大数据·分布式·spark
渣渣盟7 小时前
大数据开发环境的安装,配置(Hadoop)
大数据·hadoop·分布式
Angindem8 小时前
SpringClound 微服务分布式Nacos学习笔记
分布式·学习·微服务
电脑玩家粉色男孩11 小时前
2、Ubuntu 环境下安装RabbitMQ
linux·rabbitmq
龙仔72516 小时前
离线安装rabbitmq全流程
分布式·rabbitmq·ruby
〆、风神19 小时前
Spring Boot 整合 Lock4j + Redisson 实现分布式锁实战
spring boot·分布式·后端