SpringBoot实现RabbitMQ的简单队列(SpringAMQP 实现简单队列)

简介: SpringBoot实现RabbitMQ的简单队列(SpringAMQP 实现简单队列)

1. 前言


SpringAMQP 是基于 RabbitMQ 封装的一套模板,并且还利用 SpringBoot 对其实现了自动装配,使用起来非常方便。

SpringAmqp 的官方地址:https://spring.io/projects/spring-amqp


说明

1.Spring AMQP 是对 Spring 基于 AMQP 的消息收发解决方案,它是一个抽象层,不依赖于特定的 AMQP Broker 实现和客户端的抽象,所以可以很方便地替换。比如我们可以使用 spring-rabbit 来实现。

2.spring-rabbit用于与RabbitMQ服务器交互的工具包

3.SpringAMQP提供了三个功能:

  • 自动声明队列、交换机及其绑定关系
  • 基于注解的监听器模式,异步接收消息
  • 封装了RabbitTemplate工具,用于发送和接收消息


2. Basic Queue 简单队列模型


步骤如下:


1.在父工程中引入 spring-amqp 的依赖


2.在 publisher 服务中利用 RabbitTemplate 发送消息到 test2024.simple.queue 这个队列


3.在 consumer 服务中编写消费逻辑,绑定 test2024.simple.queue 这个队列


2.1 父工程导入依赖

<!--AMQP依赖,包含RabbitMQ-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>


2.2 消息发送

2.2.1 消息发送方必要的配置

#  RabbitMQ
rabbitmq:
  host: **.105.**.**
  port: 5672
  username: ****
  password: ****
  virtual-host: /


2.2.2 发消息

@SpringBootTest
public class TestRabbitMQ {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Test
    public void test01() {
        //  声明队列名称
        String queueName = "test2024.simple.queue";
        String message = "";
        // 发送消息
        rabbitTemplate.convertAndSend(queueName, message);
    }
    
}

注意在执行发送消息前要确保 队列 先声明到. 所以我们可以先在配置类里声明出队列:

@Configuration
public class RabbitMQConf {
   //  声明一个 队列 test2024.simple.queue
   @Bean
   public Queue testSimpleQueue() {
       return new Queue("test2024.simple.queue");
   }
}

启动SpringBoot项目后,让该队列先注册进MQ.然后以后执行测试代码都不用再注册了.

当 该 队列注册进去后,我们执行测试发送消息代码, 执行成功后,看MQ页面:

如此 就完成了 消息的发送.


3. 消息接收


3.1 消息接收方必要的配置

spring:
  rabbitmq:
    host: ip  # 主机名
    port: 5672 # 发送消息和接收消息的端口号
    virtual-host: / # 虚拟主机
    username: *** # 用户名
    password: *** # 密码

3.2 接收消息

@Component
@Component
public class SpringRabbitListener {

    //  监听制定队列,Spring只要接收到该队列的消息就会接收消息
    @RabbitListener(queues = "test2024.simple.queue")
    public void rabbitListener(String message){
        System.out.println("接收到消息:" + message);;
    }

}

启动消息接受服务. 控制台打印收到的消息:

至此 . 我们用 RabbitMQ 来发送消息及接受消息就实现了.

MQ 页面

看到消息被消费了.

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
4月前
|
编解码 NoSQL Java
使用Spring Boot + Redis 队列实现视频文件上传及FFmpeg转码的技术分享
【8月更文挑战第30天】在当前的互联网应用中,视频内容的处理与分发已成为不可或缺的一部分。对于视频平台而言,高效、稳定地处理用户上传的视频文件,并对其进行转码以适应不同设备的播放需求,是提升用户体验的关键。本文将围绕使用Spring Boot结合Redis队列技术来实现视频文件上传及FFmpeg转码的过程,分享一系列技术干货。
214 3
|
4月前
|
消息中间件 Java 网络架构
|
2月前
|
消息中间件 存储 监控
RabbitMQ 队列之战:Classic 和 Quorum 的性能洞察
RabbitMQ 是一个功能强大的消息代理,用于分布式应用程序间的通信。它通过队列临时存储消息,支持异步通信和解耦。经典队列适合高吞吐量和低延迟场景,而仲裁队列则提供高可用性和容错能力,适用于关键任务系统。选择哪种队列取决于性能、持久性和容错性的需求。
151 6
|
2月前
|
消息中间件 存储 JSON
rabbitmq基础教程(ui,java,springamqp)
本文提供了RabbitMQ的基础教程,包括如何使用UI创建队列和交换机、Java代码操作RabbitMQ、Spring AMQP进行消息发送和接收,以及如何使用不同的交换机类型(fanout、direct、topic)进行消息路由。
26 0
rabbitmq基础教程(ui,java,springamqp)
|
3月前
|
消息中间件 JSON Java
|
4月前
|
消息中间件 Java 测试技术
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
这篇文章是关于如何在SpringBoot应用中整合RabbitMQ的消息中间件。内容包括了在SpringBoot项目中添加RabbitMQ的依赖、配置文件设置、启动类注解,以及如何通过单元测试来创建交换器、队列、绑定,并发送和接收消息。文章还介绍了如何配置消息转换器以支持对象的序列化和反序列化,以及如何使用注解`@RabbitListener`来接收消息。
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
|
3月前
|
消息中间件 存储 Java
SpringCloud基础4——RabbitMQ和SpringAMQP
消息队列MQ、RabbitMQ、SpringAMQP高级消息队列协议、发布/订阅模型、fanout、direct、topic模式
SpringCloud基础4——RabbitMQ和SpringAMQP
|
3月前
|
消息中间件
rabbitmq,&队列
rabbitmq,&队列
|
3月前
|
消息中间件 JSON Java
玩转RabbitMQ声明队列交换机、消息转换器
玩转RabbitMQ声明队列交换机、消息转换器
93 0
|
4月前
|
消息中间件 存储 NoSQL
MQ的顺序性保证:顺序队列、消息编号、分布式锁,一文全掌握!
【8月更文挑战第24天】消息队列(MQ)是分布式系统的关键组件,用于实现系统解耦、提升可扩展性和可用性。保证消息顺序性是其重要挑战之一。本文介绍三种常用策略:顺序队列、消息编号与分布式锁,通过示例展示如何确保消息按需排序。这些方法各有优势,可根据实际场景灵活选用。提供的Java示例有助于加深理解与实践应用。
109 2