RabbitMQ 事务机制详解与 Spring 配置实践
事务概述
RabbitMQ 基于 AMQP 协议实现,该协议支持事务机制。Spring AMQP 提供了对事务相关的操作支持。RabbitMQ 事务允许开发者确保消息的发送和接收是原子的,要么全部成功,要么全部失败。
添加配置
在 application.yml 中添加如下配置:
spring:
application:
name: rabbit-extensions-demo
rabbitmq:
addresses: amqp://study:[email protected]:5672/extension
常量类
定义队列名称常量:
public class Constants {
// 事务队列
public static final String TRANS_QUEUE = "trans.queue";
}
声明队列
配置队列 Bean:
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.QueueBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import rabbitextensionsdemo.constant.Constants;
@Configuration
public class RabbitMQConfig {
@Bean("transQueue")
public Queue transQueue() {
return QueueBuilder.durable(Constants.TRANS_QUEUE).build();
}
}
设置 RabbitTemplate
开启通道事务:
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
org.springframework.amqp.rabbit.core.RabbitTemplate;
org.springframework.context.annotation.Bean;
org.springframework.context.annotation.Configuration;
{
RabbitTemplate {
(connectionFactory);
rabbitTemplate.setChannelTransacted();
rabbitTemplate;
}
}


