SpringBoot整合RabbitMQ

建立SpringBoot项目时无法响应,通过Spring项目自己导入springBoot的操作步骤
在创建SpringBoot结合RabbitMQ的时候,无法创建springBoot项目(网不好),故使用spring项目自己加入springBoot

1.在pom文件里导入依赖 Spring-boot-parent

在这里插入图片描述

2.build里面加入springMaven插件:spring-boot-maven-plugin

在这里插入图片描述
在这里插入图片描述

3.添加rabbit在springboot里面需要的依赖

在这里插入图片描述

4.在resources文件的下创建yml文件

在这里插入图片描述

配置一下

在这里插入图片描述

在服务中启动RabbitMQ

在这里插入图片描述

5.开始创建生产者:

新建一个生产者项目
创建实体类,实现序列化接口
在这里插入图片描述

6.创建交换机。

在这里插入图片描述

7.创建配置类

在这里插入图片描述
这样生产者就部署完毕了,接下来开始部署消费者。

消费者:

首先配置yml文件:

在这里插入图片描述

创建实体类:实现implments接口

在这里插入图片描述
在这里插入图片描述

接下来创建消费者组件。

在这里插入图片描述

配置监听器,里面绑定队列queue:

通过 @RabbitListener 注解声明 Binding
通过 @RabbitListener 的 bindings 属性声明 Binding(若 RabbitMQ 中不存在该绑定所需要的 Queue、Exchange、RouteKey 则自动创建,若存在则抛出异常)
在这里插入图片描述
详细介绍下队列参数:

name:队列名称
durable: 队列是否持久化。
false:队列在内存中,服务器挂掉后,队列就没了
true:服务器重启后,队列将会重新生成.注意:只是队列持久化,不代表队列中的消息持久化!!!

exclusive:队列是否专属。
专属的范围针对的是连接,也就是说,一个连接下面的多个信道是可见的.对于其他连接是不可见的.连接断开后,该队列会被删除.注意,不是信道断开,是连接断开.并且,就算设置成了持久化,也会删除.

autoDelete: true:
如果所有消费者都断开连接了,是否自动删除.如果还没有消费者从该队列获取过消息或者监听该队列,那么该队列不会删除.只有在有消费者从该队列获取过消息后,该队列才有可能自动删除(当所有消费者都断开连接,不管消息是否获取完)

arguments: null 队列的配置

配置@RabbitHandler,手动签收

@RabbitListener 和 @RabbitHandler 搭配使用

@RabbitListener 可以标注在类上面,需配合 @RabbitHandler 注解一起使用
@RabbitListener 标注在类上面表示当有收到消息的时候,就交给 @RabbitHandler 的方法处理,具体使用哪个方法处理,根据 MessageConverter 转换后的参数类型
在这里插入图片描述
注:
在这里插入图片描述
@Payload用来获取参数传进来的信息,
Channel: 手动签收需要绑定频道
@Headers是在交换机把消息转发给队列后,获取队列中消息的头的信息

在这里插入图片描述
tag:签收消息的id(从请求头中取----》AmqpHeaders.DELIVER_TAG)
b:表示消费者是接受当前的消息还是接受队列中所有未签收的消息

既然是手动签收,需要在yml文件中多配置一句话:
在这里插入图片描述

配置完成,测试:
首先打开 生产者
在这里插入图片描述
在这里插入图片描述
打开消费者在这里插入图片描述
查看页面,已经绑定成功了。
在这里插入图片描述
开始生产消息
添加junit测试依赖
在这里插入图片描述
在这里插入图片描述
在消费者控制台页面,显示已经接收成功
在这里插入图片描述
而且在页面上管道已经创建了,
在这里插入图片描述


消息确认机制在SpringBoot中的实现:

首先回顾:消息确认机制和生产者无关,之和消费者有关。
在生产者的yml文件中添加如下配置:
在这里插入图片描述

添加确认和返回的一个监听器,来监听我们的确认消息和返回消息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
correlationData:自定义消息的ID:
在这里插入图片描述
可以在这里面配置好路由Key
在这里插入图片描述
然后在消费者里面配置路由key
在这里插入图片描述

Spring Boot框架可以很容易地与RabbitMQ进行集成。为了实现这个目标,你需要在项目的依赖项中添加两个关键的依赖项。首先,你需要添加spring-boot-starter-amqp依赖项,它提供了与RabbitMQ进行通信的必要类和方法。其次,你还需要添加spring-boot-starter-web依赖项,以便在项目中使用Web功能。 在你的项目中创建两个Spring Boot应用程序,一个是RabbitMQ的生产者,另一个是消费者。通过这两个应用程序,你可以实现消息的发送和接收。生产者应用程序负责将消息发送到RabbitMQ的消息队列,而消费者应用程序则负责从队列中接收并处理消息。这样,你就可以实现基于RabbitMQ的消息传递系统。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SpringBoot整合RabbitMQ](https://blog.csdn.net/K_kzj_K/article/details/106642250)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Springboot 整合RabbitMq ,用心看完这一篇就够了](https://blog.csdn.net/qq_35387940/article/details/100514134)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [undefined](undefined)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值