RabbitMQ

RabbitMQ

RabbitMQ是基于Erlang(处理并发)语言开发的开源消息通信中间件,官网地址:

https://www.rabbitmq.com/

环境搭建

基于Docker安装RabbitMQ, 使用命令如下

1
2
# 查询版本
docker search rabbitmq
1
2
3
4
5
6
7
8
9
# linux
docker run \
-d \
--name=rabbitmq-server \
-p 15672:15672 \
-p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=123456 \
rabbitmq:3.11.28-management
1
2
# win
docker run --name=rabbitmq-server -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -d rabbitmq:3.11.28-management
  • 15672:RabbitMQ提供的管理控制台的端口
  • 5672:RabbitMQ的消息发送处理接口

入门

架构图

202312271833685.png

其中包含几个概念:

  • publisher:生产者,也就是发送消息的一方
  • consumer:消费者,也就是消费消息的一方
  • queue:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理
  • exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。
  • virtual host:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue

SpringAMQP

Spring的官方基于RabbitMQ提供了这样一套消息收发的模板工具,并且还基于SpringBoot对其实现了自动装配。

SpringAMQP提供了三个功能:

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

项目结构

创建测试案例项目结构

  • rabbitmq-demo: 父工厂,管理依赖
  • publisher:消息推送者
  • consumer:消息消费者

导入主要依赖 (项目为SpringBoot工程)

1
2
3
4
5
<!--SpringAMQP:包含了RabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

入门案例