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 "发送成功";
}
相关推荐
txinyu的博客7 小时前
解析业务层的key冲突问题
开发语言·c++·分布式
你好龙卷风!!!16 小时前
rabbitMQ入门 (mac)
macos·rabbitmq·ruby
yumgpkpm17 小时前
Cloudera CDH、CDP、Hadoop大数据+决策模型及其案例
大数据·hive·hadoop·分布式·spark·kafka·cloudera
IT大白18 小时前
4、Kafka原理-Consumer
分布式·kafka
独自破碎E18 小时前
怎么在RabbitMQ中配置消息的TTL?
分布式·rabbitmq
七夜zippoe19 小时前
缓存策略:从本地到分布式架构设计与Python实战
分布式·python·缓存·lfu·lru
num_killer20 小时前
小白的Spark初识(RDD)
大数据·分布式·spark
小北方城市网20 小时前
微服务架构设计实战指南:从拆分到落地,构建高可用分布式系统
java·运维·数据库·分布式·python·微服务
heartbeat..20 小时前
Spring 全局上下文实现指南:单机→异步→分布式
java·分布式·spring·context