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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6天前
|
消息中间件 Java 程序员
Spring Boot整合RabbitMQ
Spring Boot整合RabbitMQ
|
7天前
|
监控 NoSQL Java
在Spring Boot中集成Redisson实现延迟队列
在Spring Boot中集成Redisson实现延迟队列
33 6
|
9天前
|
消息中间件 Java Kafka
SpringBoot实用开发篇第六章(整合第三方技术,ActiveMQ,RabbitMQ,RocketMQ,Kafka)
SpringBoot实用开发篇第六章(整合第三方技术,ActiveMQ,RabbitMQ,RocketMQ,Kafka)
|
7天前
|
消息中间件 监控 Java
使用Spring Boot结合ActiveMQ和MQTT实现消息的发送和接收
使用Spring Boot结合ActiveMQ和MQTT实现消息的发送和接收
47 3
|
17天前
|
消息中间件 存储 监控
RabbitMQ 死信队列
RabbitMQ的死信队列(DLQ)是存储无法正常消费消息的特殊队列,常见于消息被拒绝、过期或队列满时。DLQ用于异常处理、任务调度和监控,通过绑定到普通队列自动路由死信消息。通过监听死信队列,可以对异常消息进行补偿和进一步处理,提升系统稳定性和可维护性。
15 1
|
2天前
|
消息中间件
RabbitMQ配置单活模式队列
RabbitMQ配置单活模式队列
7 0
|
3天前
|
消息中间件 数据库
03.RabbitMQ延迟队列
03.RabbitMQ延迟队列
16 0
|
17天前
|
消息中间件 存储 负载均衡
消息队列 MQ产品使用合集之如何排查是哪个队列导致的异常TPS增加
阿里云消息队列MQ(Message Queue)是一种高可用、高性能的消息中间件服务,它允许您在分布式应用的不同组件之间异步传递消息,从而实现系统解耦、流量削峰填谷以及提高系统的可扩展性和灵活性。以下是使用阿里云消息队列MQ产品的关键点和最佳实践合集。
|
1月前
|
消息中间件 JSON Java
RabbitMQ的springboot项目集成使用-01
RabbitMQ的springboot项目集成使用-01
|
1月前
|
消息中间件 Java 数据安全/隐私保护
Spring Cloud 项目中实现推送消息到 RabbitMQ 消息中间件
Spring Cloud 项目中实现推送消息到 RabbitMQ 消息中间件