MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

Spring Boot中如何整合RabbitMQ消息队列?

2025-02-10 12:37 huorong 精选文章 2 ℃ 0 评论

RabbitMQ是一个开源的消息代理(Message Broker)软件通过,高级消息队列协议(AMQP, Advanced Message Queuing Protocol),用于在分布式系统中传递消息,支持异步通信、解耦应用程序组件、负载均衡和消息持久化等功能。下面我们就来介绍一下如何在Spring Boot项目中整合并且使用RabbitMQ。

通过Docker搭建RabbitMQ环境

第一步、拉取RabbitMQ的镜像

??首先,从 Docker Hub 拉取 RabbitMQ 镜像

docker pull rabbitmq:management

??这里需要注意rabbitmq:management 是带有管理插件的版本,方便通过Web界面管理RabbitMQ,但是要注意生产环境中避免泄露管理页面导致安全隐患的发生。

第二步、运行RabbitMQ

??我们可以通过如下的命令来启动RabbitMQ容器

docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:management
  • -d:后台运行容器。
  • --hostname my-rabbit:设置容器主机名。
  • --name some-rabbit:为容器命名。
  • -p 5672:5672:映射 RabbitMQ 的默认端口 5672。
  • -p 15672:15672:映射管理插件的 Web 界面端口 15672。

第三步、访问RabbitMQ管理界面

??启动后,通过浏览器访问 http://localhost:15672,使用默认用户名 guest 和密码 guest 登录。

image-20250114090046439

第四步、停止和启动容器

docker stop some-rabbit
docker start some-rabbit

# 删除容器、需要先停止容器之后再进行删除
docker stop some-rabbit
docker rm some-rabbit

使用 Docker Compose

??使用 Docker Compose 可以更方便地管理 RabbitMQ。如下所示是一个docker-compose.yml文件。

version: '3'
services:
  rabbitmq:
    image: rabbitmq:management
    container_name: some-rabbit
    hostname: my-rabbit
    ports:
      - "5672:5672"
      - "15672:15672"
    environment:
      RABBITMQ_DEFAULT_USER: admin
      RABBITMQ_DEFAULT_PASS: password

??然后就可以通过如下的命令启动

docker-compose up -d
docker-compose stop
docker-compose down # 停止并删除容器

在Spring Boot整合RabbitMQ

??这里我们通过spring-boot-starter-amqp模块来实现与RabbitMQ的整合连接。

第一步、引入依赖

??首先,我们需要创建一个Spring Boot的项目然后在项目POM文件中引入相关的依赖配置。


    
    
        org.springframework.boot
        spring-boot-starter-amqp
    

    
    
        org.springframework.boot
        spring-boot-starter-web
    

    
    
        org.projectlombok
        lombok
        provided
    

第二步、配置RabbitMQ的连接

??我们可以在application.propertiesapplication.yml 中配置 RabbitMQ 连接信息,如下所示。

# RabbitMQ 配置
spring.rabbitmq.host=192.168.1.202
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

??上面的连接使用的用户名和密码,可以在使用Docker Compose的时候进行自定义修改。

第三步、配置队列

??添加好配置连接之后,接下来我们就来创建一个用来发送消息的消息队列。如下所示。

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 myQueue() {
        return new Queue("myQueue", false); // 队列名称:myQueue,非持久化
    }
}

第四步、创建消息生产者

??这里我们通过RESTFul接口来创建一个简单的消息生产者,如下所示。

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MessageController {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @GetMapping("/send")
    public String sendMessage(@RequestParam String message) {
        // 发送消息到队列 "myQueue"
        rabbitTemplate.convertAndSend("myQueue", message);
        return "Message sent: " + message;
    }
}

第五步、创建消息消费者

??有了消息生产者之后,接下来,我们需要创建一个消费者用来监听myQueue队列,来接收并且处理该队列的消息。

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class MessageListener {

    @RabbitListener(queues = "myQueue")
    public void receiveMessage(String message) {
        System.out.println("Received message: " + message);
    }
}

第六步、运行测试

??配置完成之后,接下来我们就可以启动项目,然后通过浏览器或者是通过Postman等工具调用如下的接口来发送一个消息。

http://localhost:8080/send?message=HelloRabbitMQ

??然后就可以在控制台日志中看到如下的内容输出。

Received message: HelloRabbitMQ

??有了这些之后,我们就完成了一个简单的Spring Boot与RabbitMQ的整合项目实现,当然,我们也可以通过这个简单的示例代码来深入的了解更高级的Rabbit的用法。

总结

??上面我们介绍了如何通过Docker来安装并且运行一个RabbitMQ的容器实例,并且通过简答的Spring Boot的代码来对RabbitMQ进行了连接,当然RabbitMQ提供的功能远远不止这些,在后续的分享中我们还会基于这个项目进行深入的探索,希望大家多多关注,敬请期待。

Tags:rabbitmq管理页面地址

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言