RabbitMQ 应用 - SpringBoot

以下介绍的是基于 SpringBoot 的 RabbitMQ 开发介绍

Spring Spring AMQP

RabbitMQ RabbitMQ tutorial - "Hello World!" | RabbitMQ

工程搭建步骤:

1.引入依赖

2.编写 yml 配置,配置基本信息

3.编写生产者代码

4.编写消费者代码 定义监听类,使用 @RabbitListener 注解完成队列监听

5.运行观察结果

工作队列模式

常量声明

声明队列

生产者代码

消费者代码(监听类)


调用方法,发送消息(记得注掉监控类,否则消息一经发出,就会被消费)

队列已经创建成功

恢复监控类,重启服务

@RabbitListener 是Spring框架中用于监听RabbitMQ队列的注解, 通过使用这个注解,可以定义一个方法, 以便从RabbitMQ队列中接收消息. 该注解支持多种参数类型,这些参数类型代表了从RabbitMQ接收到的消息和相关信息

以下是⼀些常用的参数类型:

  1. String :返回消息的内容

  2. Message ( org.springframework.amqp.core.Message ): Spring AMQP的 Message 类,返回原始的消息体以及消息的属性, 如消息ID, 内容, 队列信息等.

  3. Channel ( com.rabbitmq.client.Channel ):RabbitMQ的通道对象, 可以用于进行更高级的操作,如手动确认消息

发布订阅模式

在发布/订阅模型中,多了一个Exchange角色(之前的模式中也有 exchange,只不过是没有创建新的交换机,而是使用默认的交换机)

Exchange 常见有三种类型, 分别代表不同的路由规则

a) Fanout:广播,将消息交给所有绑定到交换机的队列(Publish/Subscribe模式)

b) Direct:定向,把消息交给符合指定routing key的队列(Routing模式)

c) Topic:通配符,把消息交给符合routing pattern(路由模式)的队列(Topics模式)


注掉监听类,启动服务,调用接口

两个队列中会存储一个相同的消息

恢复原状,启动服务,调用接口

路由模式

交换机类型为Direct时, 会把消息交给符合指定routing key的队列

队列和交换机的绑定, 不是任意的绑定了, 而是要指定一个RoutingKey(路由key)

消息的发送方在向Exchange发送消息时, 也需要指定消息的RoutingKey

Exchange也不再把消息交给每一个绑定的key, 而是根据消息的RoutingKey进行判断, 只有队列的

RoutingKey 和消息的RoutingKey 完全一致, 才会接收到消息

如果在参数中,没有指明交换机的类型,需要在填写 routingKey 后,添加 noargs()

上述提供的接口可以进行如下修改: 将routingKey 作为参数传递


注掉监听类,开启服务,调用接口后,查看队列里面的消息

恢复监听类,查看返回结果

通配符模式

Topics 和Routing模式的区别是:

  1. topics 模式使用的交换机类型为topic(Routing模式使用的交换机类型为direct)

  2. topic 类型的交换机在匹配规则上进行了扩展, Binding Key支持通配符匹配(正则匹配)


注掉监听类,开启服务,调用接口发送消息

进入 RabbitMQ 管理界面,产看消息个数和内容

恢复监听类,重新开启服务

相关推荐
MyikJ3 小时前
Java面试:从Spring Boot到分布式系统的技术探讨
java·大数据·spring boot·面试·分布式系统
孤狼逐月5 小时前
Spring boot集成milvus(spring ai)
spring boot·spring·milvus·spring ai
Debug Your Career6 小时前
在Spring Boot中实现Kafka动态反序列化:针对多主题的灵活数据处理
spring boot·kafka
敬将来的自己6 小时前
Spring Boot整活指南:从Helo World到“真香”定律
java·spring boot·后端
述雾学java6 小时前
Spring Boot 整合 Spring Data JPA、strategy 的策略区别、什么是 Spring Data JPA
java·spring boot·java核心基础
神秘的t7 小时前
SpringBoot 配置文件
java·spring boot·后端·spring·配置文件
刘大浪7 小时前
若依框架 账户管理 用户分配界面解读
spring boot·后端
helloworld工程师8 小时前
Spring Boot 如何实现定时任务
java·spring boot·后端
peerless_fu9 小时前
rabbitmq AI复习
spring·rabbitmq
lynn-6611 小时前
整合Jdk17+Spring Boot3.2+Elasticsearch9.0+mybatis3.5.12的简单用法
java·spring boot·elasticsearch