1 RabbitMQ概述
-
RabbitMQ是基于Erlang语言开发的开源消息通信中间件,官网地址:https://www.rabbitmq.com/
-
RabbitMQ的结构:
-
RabbitMQ中的一些角色:
- channel:操作MQ的工具
- publisher:生产者
- consumer:消费者
- exchange个:交换机,负责消息路由(路由消息到队列中)
- queue:队列,存储消息(缓存消息)
- virtualHost:虚拟主机,隔离不同租户的exchange、queue、消息的隔离(是对queue、exchange等资源的逻辑分组)
2 CentOS7环境Docker安装RabbitMQ(单机部署)
2.1 获取镜像
-
方式1:在线拉取
docker pull rabbitmq:3-management
-
方式2:本地加载
- 课前资料已经提供了镜像包:
- 上传到虚拟机中后,使用命令加载镜像即可:
docker load -i mq.tar
- 课前资料已经提供了镜像包:
2.2 安装MQ
-
执行下面的命令来运行MQ容器:
docker run -e RABBITMQ_DEFAULT_USER=yubaby -e RABBITMQ_DEFAULT_PASS=123321 --name mq --hostname mq1 -p 15672:15672 -p 5672:5672 -d rabbitmq:3-management
-
命令解读:
-e
给MQ设置环境变量,此处设置了两个环境变量:用户名&密码,用于后续访问MQ&登录MQ管理平台--name
是给MQ起名字--hostname
给MQ设置主机名(单机部署时不配置也行;但集群部署时必须配置,后面讲MQ集群部署)-p
是配置端口映射,此处开放两个端口,15672是MQ管理平台端口,5672是MQ消息通信端口-d
是后台运行(此命令,即安装MQ容器)- 最后的
rabbitmq:3-management
是镜像名称
- 安装&访问
- 默认界面
- 添加用户&分配权限
虚拟主机隔离
3 RabbitMQ消息模型
https://www.rabbitmq.com/getstarted.html
2.
RabbitMQ官方提供了7个不同的Demo示例(如上)。
在此学习前五个,对应了如下不同的消息模型:
4 RabbitMQ入门案例"HelloWorld"
4.1 案例简介
- 简单队列模式的模型图
官方的HelloWorld是基于最基础的消息队列模型来实现的,只包括三个角色:- publisher:消息发布者,将消息发送到队列queue
- queue:消息队列,负责接受并缓存消息
- consumer:订阅队列,处理队列中的消息
- 案例步骤
4.2 案例实现
4.2.1
4.3 小结
- 基本消息队列的消息发送流程:
- 建立connection
- 创建channel
- 利用channel声明队列
- 利用channel向队列发送消息
- 基本消息队列的消息接收流程:
- 建立connection
- 创建channel
- 利用channel声明队列
- 定义consumer的消费行为handleDelivery()
- 利用channel将消费者与队列绑定