保姆级别的RabbitMQ教程!一看就懂!(有安装教程,送安装需要的依赖包,送Java、Golang两种客户端教学Case) (一)
什么是AMQP 和 JMS #
AMQP 即Advanced Message Queuing Protocol 是一个应用层标准高级消息队列协议 提供统一消息服务。是应用层协议的一个开放标准 为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息 并不受客户端/中间件不同产品 不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。
JMS 即Java消息服务 Java Message Service 应用程序接口 由sun公司提出 并且sun公司定义好了接口。包括create、send、recieve。只要想使用它 就得实现它定义的接口。 消息服务是一个与具体平台无关的API 绝大多数MOM提供商都对JMS提供支持。不好的地方是语言层面的限制 只能为JAVA 这其实稍微有点和微服务的观点相违背。要求语言只能是JAVA 而不能是py等。
ActiveMQ 基于JMS Apache
RocketMQ Rocket 火箭 阿里巴巴的产品 基于JMS 目前由Apache基于会维护
Kafka 分布式消息系统 亮点 吞吐量超级高 没秒中数十万的并发。
RabbitMQ Rabbit 兔子 由erlang语言开发 基于AMQP协议 在erlang语言特性的加持下 RabbitMQ稳定性要比其他的MQ产品好一些 而且erlang语言本身是面向高并发的编程的语言 所以RabbitMQ速度也非常快。且它基于AMQP协议 对分布式、微服务更友好。
安装使用的rpm包我提前准备好了 如下
操作系统 Centos7.3
推荐 这三个包我提前下载好了 关注白日梦的公众号 文末有二维码 后台回复 rbmq 可以直接领取。
如果你不怕麻烦也想自己参照文档自行下载 可参考文末的链接。
科普一下
比如你安装软件A 结果这个软件可能依赖了软件B 于是你直接安装A就会接到报错 说当前操作系统环境中缺少软件B 让你先安装软件B后 再尝试安装软件A。
如果你看过Linux私房菜类似书 其实你应该也知道 rmp其实已经处理好各种依赖关系的软件包 所以安装起来相对来说是比较省心的。
# 安装erlang yum install esl-erlang_23.0-1_centos_7_amd64.rpm -y yum install esl-erlang-compat-18.1-1.noarch.rpm -y # 安装rabbitmq rpm -ivh rabbitmq-server-3.8.9-1.el7.noarch.rpm
比如遇到如下的安装包错 按提示解决就好了
下载依赖后重试即可完成安装。
通过如下命令可启动
service rabbitmq-server start
你可以像上面这样 安装之后立刻启动。
这时rabbitmq使用的是默认的配置参数。但是一般都来说我们都希望rabbitmq能使用我们可修改的配置文件启动 这样也方便我们后续对mq的控制 下面就一起看一rabbitmq的认证、授权、访问控制、配置文件。
你还可以像下面这样开启web插件。
开启web管理模块插件之后访问 http://服务器的ip:15672/ 可以找到登陆入口。
设置rabbitmq开机启动
chkconfig rabbitmq-server on
RabbitMQ启动之后 我们想使用它的前提是用username、password连接上它。这里所说的username和passowrd其实就是一个被授予一定权限的用户。
用户连接上RabbitMQ即可创建virtual host使用MQ。在说什么是virtual host之前 先说下RabbitMQ默认有的被授权的用户 username guest、password guest、virtualhost /。
但是这个用户被限制了只能在RabbitMQ所在机器的本地才能登陆MQ 不允许你使用该用户通过ip port远程登录RabbitMQ 就像下面这样
你使用特定的用户去连接MQ的过程即为Authentication
rabbitmq提供给我们一个配置文件模版 默认在 /usr/share/doc/rabbitmq-server-xxx/rabitmq.conf.example
如果你没有找到的话也没关系 去github上拷贝一份模版配置 手动创建 /etc/rabbitmq/rabbitmq.conf 配置文件 然后将你拷贝的配置放进去也是ok的。
rabbitmq github addr https://github.com/rabbitmq/rabbitmq-server/blob/v3.8.9/docs/
涉及到的都是基础的shell命令 不再赘述。
注意文件名为 rabbitmq.config 且要放在/etc/rabbitmq目录下。
可以像下面这样修改你的MQ的配置文件
然后通过service命令重启MQ 在web页面尝试登陆 接着你会成功登陆
官方 强烈不建议允许默认的用户可远程登陆MQ 用过RabbitMQ的程序员都知道默认用户名和密码是啥 这会让你的系统的安全性大大降低
推荐的做法是 删除默认用户、使用新的安全凭证创建新的用户
其实文章看到这里 什么是用户 什么是权限 你肯定已经非常清楚了。
那什么是管理用户和权限 很简单 就比如 添加/删除 User 这个User可能属于某个业务线 有了User可以使用RabbitMQ这款中间件软件。以及为User分配他能读写的virtual host。
下一小节我们会细说什么是 virtual host
本小节主要是通过实验的方式展开 实战Rabbit的用户和权限管理
主要有两种方式
**1、通过web控制台管理 **
2、通过cli命令行管理
因为我们刚才允许guest这个超级管理员可以远程登陆MQ 于是你可以像下图这样在web页面上管理用户 比如我可以为业务线A 新添加一个用户changwu01 并且给他administrator的权限 然后这个业务线通过该用户使用MQ。
你也可以像下面这样使用cli 通过命令行的方式添加用户
然后使用该用户尝试登陆 你会发现 报错了 说白日梦01不是管理员。不能登陆控制台。
如果你实战一下 现将bairimeng01的权限tags改成management 再尝试登陆 它会提示你说
所以 这时你可以直接使用guest用户登陆 然后将bairimeng01的权限改成 administrator
然后修改bairiemeng01的权限 并点击update user
修改之后重新使用bairimeng01登陆
你会发现bairimeng01可以成功登陆
查看当前RabbitMQ有哪些用户
通过命令行创建用户airimeng03、并通过命令行让白日梦03有对virtualhost /有读写权
可以通过控制台确认一下 我们的配置确实生效了。
可以通过MySQL和MySQL中的数据库来理解RabbitMQ和virtual host的关系。
MySQL大家都不陌生 经常会出现多个业务线混用一个MySQL数据库的情况 就像下图这样 每个业务线都在MySQL中创建自己的数据库 使用时各自往各自的数据库中存储数据 彼此相互不干涉。
RabbitMQ和virtual host的关系也差不多 可以让多个业务线同时使用一个RabbitMQ 只要为业务线各个业务线绑定上不同的virtual host即可
Step1:
Step2:
Step3:
Step4: 校验
相关文章
- Eclipse4.4 安装java反编译插件Eclipse Class Decompiler
- Java核心技术卷I基础知识2.1.3 安装库源文件和文档
- Java: JDBC
- JAVA17---安装+配置环境变量 JAVA安装完整教学
- Java语言
- 【Java】Eclipse的安装和JDK的安装与配置教程
- Windows系统Java配置 JDK下载、安装、环境变量配置 开发环境搭建一次解决
- JAVA-安装apache tomcat服务器
- Centos java 安装
- Lombok 安装、入门 - 消除冗长的 java 代码
- 【服务器】CentOS 7.4安装JDK(JAVA环境)
- 二、安装JAVA环境
- JAVA maven安装本地jar包
- Linux下安装Java(JDK8)
- eclipse安装JAVA反编译插件
- 浅析Java的线程池:介绍、优势、设计思路(类比工厂)、参数介绍、任务队列、4种拒绝策略、5种状态
- Java基础篇:四种代码块详解
- 华为OD机试 - 查找接口成功率最优时间段(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 【Java】:Linux下JDK默认安装路径
- Java的jdk与eclipse的(免配置环境)安装教程,亲测有效!!!
- eclipse连接MySQL遇到java.lang.ClassFormatError: Invalid pc in LineNumberTable in class file
- Java IDEA 安装