- 前言
- 一、首先我们需要引入RabiitMQ的依赖
- 二、然后进行配置
- 1.在application.yml配置文件中进行RabbitMQ的配置
- 2.创建配置类
- 3.封装发送消息和接收消息的类
- 三、测试
- 1.随便在一个Contoller类中写一个测试方法
- 2.启动项目 进行测试
前言
提示:Springboot整合RabiitMQ:
前面我们安装好了RabiitMQ并成功启动后,接下来我们就来学习如何将RabiitMQ整合到Springboot上,并且进行实战使用。springboot的项目创建这里就不进行说明了。
提示:以下是本篇文章正文内容,下面案例可供参考
一、首先我们需要引入RabiitMQ的依赖在pom.xml 中引入RabiitMQ的依赖
org.springframework.boot
spring-boot-starter-amqp
二、然后进行配置
1.在application.yml配置文件中进行RabbitMQ的配置
配置如下:
spring:
# RabbitM配置
rabbitmq:
# 服务器
host: 192.168.175.175
# 用户名
username: guest
# 密码
password: guest
# 虚拟主机
virtual-host: /
# 端口
port: 5672
# 监听相关配置
listener:
simple:
# 消费者的最小数量
concurrency: 10
# 消费者的最大数量
max-concurrency: 10
# 限制消费者 每次只处理一条消息,处理完毕后再处理下一条消息
prefetch: 1
# 启动时是否默认启动容器 默认true
auto-startup: true
# 当消息被拒绝时,是否重新进入队列
default-requeue-rejected: true
# 模板相关配置
template:
retry:
# 开启重试 默认false
enabled: true
# 重试时间 默认1000ms
initial-interval: 1000ms
# 重试的次数 默认是3
max-attempts: 3
# 重试时间的最大间隔时间 默认10000ms
max-interval: 10000ms
# 重试的间隔乘数 比如配2.0 第一次就间隔10s 第二次 间隔20s 第三次间隔40s ****
multiplier: 1
2.创建配置类
RabbitMQConfig:
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitMQConfig
{
@Bean
public Queue queue(){
return new Queue("queue",true);
}
}
3.封装发送消息和接收消息的类
对消息的发送和消息的接受我们都分别进行封装 也很简单
MqSender:
@Service
@Slf4j
public class MqSender
{
@Autowired
private RabbitTemplate rabbitTemplate;
public void send(Object msg)
{
log.info("发送消息"+msg);
rabbitTemplate.convertAndSend("queue", msg);
}
}
MqReceiver:
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MqReceiver
{
//监听配置的队列
@RabbitListener(queues = "queue")
public void receive(Object msg){
log.info("接收消息:"+msg);
}
}
三、测试
1.随便在一个Contoller类中写一个测试方法
我是在我的测试项目中TUserController中添加一个测试方法如下代码:
@RestController
@RequestMapping("/user")
public class TUserController
{
@Autowired
private MqSender mqSender;
@RequestMapping("/mq")
public void mq(){
mqSender.send("Hello");
}
}
2.启动项目 进行测试
我此次的测试路径为 http://localhost:8080/user/mq
我们可以看到IEAR控制台会输出我们的测试数据 如下
2021-12-10 13:43:08.956 INFO 41712 --- [io-8080-exec-10] com.xxxxx.seckilldemo.rabbitmq.MqSender : 发送消息Hello
2021-12-10 13:43:08.978 INFO 41712 --- [tContainer#0-12] c.xxxxx.seckilldemo.rabbitmq.MqReceiver : 接收消息:(Body:'Hello' MessageProperties [headers={}, contentType=text/plain, contentEncoding=UTF-8, contentLength=0, receivedDeliveryMode=PERSISTENT, priority=0, redelivered=false, receivedExchange=, receivedRoutingKey=queue, deliveryTag=1, consumerTag=amq.ctag-IrqC4b7RL3mg1rMy8NefPQ, consumerQueue=queue])
项目启动后RabiitMQ的控制台会显示有一个连接如下图
此次我的测试项目结构如下图:



