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及安装延迟插件的更多相关文章
- Windows 下安装RabbitMQ服务器及基本配置
RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...
- centos安装rabbitmq
RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发.RabbitMQ据说具有良 ...
- 【rabbitmq】Centos7 下安装rabbitmq
rabbitmq安装 rabbitmq的安装依赖erlang,首先应该先安装erlang,然后安装rabbitmq: Step1:安装erlang erlang-rpm安装教程 选择在Centos7 ...
- CentOS6.x安装RabbitMQ
一.安装依赖文件 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ ...
- Windows 安装Rabbitmq
Rabbitmq是基于erlang开发的消息队列,客户端支持主流的开发语言(java.C#.Python等). 环境:windows server 2012(x64) 1.下载安装 http://ww ...
- RabbitMQ学习之(二)_Centos6下安装RabbitMQ及管理配置
首先yum方式安装依赖包 yum install ncurses-devel unixODBC unixODBC-devel 安装Erlang语言环境 wget http://erlang.org/d ...
- PCB RabbitMQ的安装使用
随着公司加大力度信息化建设,PCB企业各种各样的系统软件越来越多,整个公司订单流状态监控变得越来越不可控,是时候需采用新的方式来收集各系统状态节点状态了,以下记录RabbitMQ安装使用: 一.Rab ...
- 阿里云服务器CentOS7.5安装RabbitMQ
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的. 为什么 ...
- Linux : Ubuntu 安装 RabbitMQ
安装 Erlang: 手动编译(不推荐)http://www.erlang.org/downloads下载源码 如22版本:http://erlang.org/download/otp_src_22. ...
随机推荐
- java集合(arraylist详解)
一.ArrayList概述 ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的.实现了所有可选列表操作,并允许包括 null 在内的所有元素.除了实现 List 接口外,此类 ...
- MySQL安装配置教程(超级详细)
一. 下载MySQL Mysql官网下载地址:https://downloads.mysql.com/archives/installer/ 1. 选择要安装的版本,本篇文章选择的是5.7.31版本, ...
- Visual Studio 2022 git error Unable to negotiate with xx.xxx.xxxx port 22: no matching host key type found. Their offer: ssh-rsa
前言 前两天因为升级了Git导致git提交拉取的时候都提示下面这个异常,然后经过一番折腾以后终于把这个问题解决了.但是今天我升级了下Visual Studio 2022将其升级到了17.1.3版本然后 ...
- c语言实现循环单链表
//初始化 Node*InitList() { Node*head=(Node*)malloc(sizeof(Node)); head->next=NULL; head->data=-1; ...
- 02 | 自己动手,实现C++的智能指针
第一步:针对单独类型的模板 为了完成智能指针首先第一步的想法. class shape_wrapper { public: explicit shape_wrapper( shape* ptr = n ...
- Java 虚拟机学习记录
参考资料 JVM高级特性与最佳实践-周志明 HotSpot 虚拟机垃圾回收调优指导 JVM 标准(Java SE 8) JSR 133 Java平台内存模型与线程修订版 命令行工具 JDK Vs JR ...
- Zookeeper启动问题记录——ZooKeeper audit is enabled.
问题原因是Zookeeper的日志服务默认关闭,在zoo.cfg文件中添加 audit.enable=true 保存后重启服务就能够正常启动. 另外,这个只影响Zookeeper的日志记录,不影响其他 ...
- Educational Codeforces Round 121 (Rated for Div. 2)——A - Equidistant Letters
A - Equidistant Letters 题源:https://codeforces.com/contest/1626/problem/A 今天上午VP了这场CF,很遗憾的是一道题也没写出来,原 ...
- SQL语言学习-DQL条件查询
条件查询 1. where子句后跟条件 2. 运算符 * > .< .<= .>= .= .<> * BETWEEN...AND * IN( 集合) * LIKE: ...
- Go汇编语法和MatrixOne使用介绍
目录 MatrixOne数据库是什么? Go汇编介绍 为什么使用Go汇编? 为什么不用CGO? Go汇编语法特点 操作数顺序 寄存器宽度标识 函数调用约定 对写Go汇编代码有帮助的工具 avo tex ...