在项目真正开始之前我们先来简单介绍下 RabbitMQ 的工作流程:
- 生产者往交换机中发送消息;
- 交换机通过规则绑定队列,通过路由键将消息存储到队列中;
- 消费者获取队列中的消息进行消费;
环境:SpringBoot 2.6.3、JDK 1.8
项目搭建
首先创建 SpringBoot 项目 rabbit-mq
- 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
复制代码
- yml 文件配置
spring:
rabbitmq:
host: 127.0.0.1 //rabbitMQ服务地址
port: 15672 //这个地方暂时先用我们之前配置的15672
username: cheetah //自己的账户名
password: 123456 //自己的密码
复制代码
- 直连交换机
本项目以直连交换机为例,至于其他的交换机类型将在后文中给出详细介绍。
@Configuration
public class DirectRabbitConfig {
/**
* 定义交换机
**/
@Bean
public DirectExchange directExchange(){
/**
* 交换机名称
* 持久性标志:是否持久化,默认是 true 即声明一个持久的 exchange,该exchange将在服务器重启后继续运行
* 自动删除标志:是否自动删除,默认为 false, 如果服务器想在 exchange不再使用时删除它,则设置为 true
**/
return new DirectExchange("directExchange", true, false);
}
/**
* 定义队列
**/
@Bean
public Queue directQueue(){
/**
* name:队列名称
* durable:是否持久化,默认是 true,持久化队列,会被存储在磁盘上,当消息代理重启时仍然存在
* exclusive:是否排他,默认为 false,true则表示声明了一个排他队列(该队列将仅由声明者连接使用),如果连接关闭,则队列被删除。此参考优先级高于durable
* autoDelete:是否自动删除, 默认是 false,true则表示当队列不再使用时,服务器删除该队列
**/
return new Queue("directQueue",true);
}
/**
* 队列和交换机绑定
* 设置路由键:directRouting
**/
@Bean
Binding bindingDirect(){
return BindingBuilder.bind(directQueue()).to(directExchange()).with("directRouting");
}
}
复制代码