一文熟知docker安装RabbitMQ及安装延迟插件
我这个安装攻略首先得保证服务器上安装过docker了 如果没安装docker请先去安装docker
1.首先说一下什么是MQ
MQ(message queue)字面意思上来说消息队列,FIFO先入先出,队列中存入的内容是message,是一种跨进程的通信机制,用于上下游传递消息。MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不
用依赖其他服务。
1.1为什么要用MQ/MQ有什么用
1.1.1流量消峰#
比如说订单系统最多一次可以处理一万次订单,这个处理能力在正常时段下单时绰绰有余,但是在高峰期时如果有两万次下单操作系统是处理不了的只能限制订单超过一万次后不允许用户下单,但是如果使用消息队列做缓冲,我们可以取消这个限制,把一米内的订单分散成一段时间来处理,这个时候有些用户可能在下单十几秒后才能收到下单成功消息 但是这样总比不能让用户下单体验好
1.1.2应用解耦#
以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单操作异常。当转变成基于消息队列的方式后,系统调用的问题会减少很多,比如物流系统因为发生故障,需要几分钟来修复。在这几分钟的时间里,物流系统要处理的内存被缓存在消息队列中,用户的下单操作可以正常完成。当物流系统恢复后,继续处理订单信息即可,中单用户感受不到物流系统的故障,提升系统的可用性
1.1.3异步处理#
有些服务间调用是异步的,例如 A 调用 B,B 需要花费很长的时间执行,但是 A 需要知道 B 什么时候可以执行完,一般有两种方式,A 过一段时间去调用 B 的查询 api 查询。或者 A 提供一个 callbackB 执行完之后调用 api 通知 A 服务。这两种方式都不是很优雅,使用消息总线,可以很方便解决这个问题,A 调用 B 服务后,只需要监听 B 处理完成的消息,当 B 处理完成后,会发送一条消息给 MQ,MQ 会将此消息转发给 A 服务。这样 A 服务既不用循环调用 B 的查询 api,也不用提供 callback同样 B 服务也不用做这些操作。A 服务员还能及时地得到异步处理成功的消息。
2.安装RabbitMq
接下来使用docker进行RabbitMQ的安装
2.1首先拉取镜像#
直接拉取镜像的话默认拉取最新的版本
docker pull rabbitmq:management
2.2启动镜像#
注意修改用户名和密码
docker run -d -p 15672:15672 -p 5672:5672 \-e RABBITMQ_DEFAULT_VHOST=my_vhost \-e RABBITMQ_DEFAULT_USER=admin \-e RABBITMQ_DEFAULT_PASS=admin \--hostname myRabbit \--name rabbitmq \rabbitmq
参数说明:
- -d:表示在后台运行容器;
- -p:将容器的端口 5672(应用访问端口)和 15672 (控制台Web端口号)映射到主机中;
- -e:指定环境变量:
- RABBITMQ_DEFAULT_VHOST:默认虚拟机名;
- RABBITMQ_DEFAULT_USER:默认的用户名;
- RABBITMQ_DEFAULT_PASS:默认的用户密码;
- --hostname:指定主机名(RabbitMQ 的一个重要注意事项是它根据所谓的 节点名称 存储数据,默认为主机名);
- --name rabbitmq:设置容器名称;
- rabbitmq:容器使用的镜像名称;
启动完成后可以通过 docker ps 命令来查看容器是否启动
还可以设置docker启动时自动启动
docker update rabbitmq --restart=always
2.3启动 rabbitmq_management (RabbitMQ后台管理)#
//进入容器内部 我这里使用容器名字进入 也可以使用容器id
docker exec -it rabbitmq /bin/bash
----------------------------------
//开启web后台管理界面
rabbitmq-plugins enable rabbitmq_management
2.3.1打开RabbitMQweb界面#
- 浏览器输入地址 hhtp://ip:15672 即可以访问后台管理界面 这里的ip为运行RabbitMQ的服务器ip
- 默认的用户名和密码都是guest
- 但由于我们启动的时候设置了默认的用户名和密码,所以我们可以使用设置的用户名和密码登录。
如果无法访问 可以尝试打开防火墙 如果是在阿里或者腾讯之类的服务器 要打开安全组的端口!!
到这里 我们docker安装RabbitMQ就完成了 接下来进行延迟插件的安装
3.插件下载并安装
下载地址
https://www.rabbitmq.com/community-plugins.html
进入web端后左上角有显示当前安装的RabbitMQ版本
我这里安装的是3.10版本所以我直接下载最新版的插件就可以
安装完成后用工具将插件文件上传到服务器上#
将刚刚上传的插件拷贝到容器内plugins目录下
docker cp /root/rabbitmq_delayed_message_exchange-3.10.2.ez rabbitmq:/plugins
上传之后进入容器内部
//进入容器 我这里使用容器名字 也可以用容器id进入
docker exec -it rabbitmq /bin/bash
-------------------------------------
//移动到plugins目录下
cd plugins
-------------------------------------
//查看是否上传成功
ls
然后我们启动插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
安装成功后 退出容器
exit
然后重启容器
//我这里还是使用容器名称 也可以使用容器id
docker restart rabbitmq
容器启动成功之后,登录RabbitMQ的管理界面(ip:15672 访问web界面),找到ExchangesTab页。点击Add a new exchange,在Type里面查看是否有x-delayed-message选项,如果存在就代表插件安装成功。
到这里我们的docker 安装RabbitMQ及延迟插件的安装就已经结束了!!
一文熟知docker安装RabbitMQ及安装延迟插件相关推荐
- docker安装RabbitMQ及安装延迟插件
我这个安装攻略首先得保证服务器上安装过docker了 如果没安装docker请先去安装docker 1.首先说一下什么是MQ MQ(message queue)字面意思上来说消息队列,FIFO先入先出 ...
- ubuntu使用docker-compose安装rabbitmq并实现延迟交换机
ubuntu使用docker-compose安装rabbitmq并实现延迟交换机 安装rabbitmq 前置条件是安装了docker跟docker-compose 创建docker-compose.y ...
- docker rabbitmq_使用Docker集成Rabbitmq与安装elasticsearch教程
今天为大家分享,使用Docker-集成Rabbitmq,使用Docker-安装elasticsearch,Docker容器的备份与迁移教学! 使用Docker-集成Rabbitmq 使用Docker- ...
- Docker安装RabbitMQ并安装延时队列插件
一.RabbitMQ简介 RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消 ...
- docker 安装RabbitMQ(镜像安装)
目录 安装: docker:链接:docker安装 1.进入docker hub镜像仓库 2.选择镜像 3.拉取镜像 4.根据下载的镜像创建和启动容器 5.查看正在运行容器 6.浏览器打开web管理端 ...
- 一文了解Docker核心概念和安装配置
核心概念 Docker 有三大核心概念,分别是镜像,容器,仓库. Docker 镜像 Docker 镜像类似于虚拟机的镜像,可以把它理解为一个只读的模板,例如一个镜像可以包含一个基本的操作系统环境,里 ...
- Winds下如何安装 rabbitmq 以及安装过程出现的问题。
这算是一篇整合帖吧,把安装rabbitmq 的坑都指出来 想安装首先就得去下载安装包 原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang ...
- linux离线安装rabbitmq,离线安装rabbitMQ
安装步骤 整体软件环境 |软件|版本| |-|-| |RHEL |7 update3| |Erlong|19.3| |rabbitMQ|3.6.10| Erlong语言安装离线安装 rabbitMQ是 ...
- Windows server 安装RABBITMQ(安装过程及错误解决)
安装rabbitmq之前得安装Erlang/OTP,且需要版本对应 更多请看RabbitMQ Erlang Version Requirements - RabbitMQ 安装erl 下载Downlo ...
最新文章
- 2021年大数据常用语言Scala(四):基础语法学习 声明变量
- 【KVM】Ubuntu14.04 安装KVM
- Qt小游戏《2048》源码(含大量注释)
- bzoj1190:[HNOI2007]梦幻岛宝珠
- 每个客户使用Jersey处理的Cookie
- jquery中阻止事件冒泡的方法
- myeclipse 8.5 注册码
- 基于STM32F4的舵机控制
- 非常漂亮滴皮肤skin++ 终极破解之法
- Lodop在页面获取打印机列表 选择打印机预览
- 2020年研究生数学建模竞赛总结复盘
- js-showModalDialog和dialogArguments
- 高通msm8937的BLSP学习
- 触摸屏校准之tslib
- matlab 阶梯形矩阵,求化矩阵为阶梯型矩阵的代码(不是行最简函数rref)
- C#对Java--微软的反击
- 网站服务器在本地是指,本地域名是什么意思?本地域名服务器在哪?
- 使用echarts完成中国省市区县镇地图展示
- 微信小程序开发学习小结之tabBar组件
- yunfile php,yunfile下载器
热门文章
- 【Oracle 19c】解决 Oracle EM(Enterprise Manager) Express 切换回旧版后无法访问的问题
- shutdown命令怎么取消oracle,如何使用 shutdown 命令关闭系统
- Dom4J解析XML、Xpath检索XML
- HTML5游戏开发进阶指南
- Python 单引号、双引号和三引号混用时一定要注意!!!
- 【逻辑漏洞技巧拓展】————4、逻辑漏洞之支付漏洞
- 免杀学习(二)python
- 临床医学专业计算机必须过几级,临床、金融、计算机电子信息,这些专业过去现在未来都是大热门...
- 三种主流的3D建模软件,建模小白必学,各自特点全面解析
- fel 文档_浅谈涉外工程建设项目的FEL过程和FEED工作