1. 消息队列(Message queue)
消息队列是在消息传递过程中保存消息的容器,通过消息队列可以使用消息将应用程序连接起来。这些消息通过像RabbitMQ这样的消息代理服务器在应用程序之间路由。
运用消息队列的好处:
- 解耦、易于扩展
- 数据冗余、可恢复
- 保证顺序
- 削峰、异步通信
2. 高级消息队列协议(Advanced Message Queuing Protocol)
一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
3. RabbitMQ
RabbitMQ 是采用Erlang 语言实现AMQP的开源消息代理软件(亦称面向消息的中间件),它最初起源于金融系统,用于在分布式系统中存储转发消息。
RabbitMQ特点:
- 可靠性:持久化、发送确认、消费确认等机制
- 高可用:集群、镜像
- 支持多种协议:AMQP、STOMP(面向消息的简单文本协议)、MQTT(消息队列遥测传输)
- 多语言
- 管理界面
- 插件机制
4. RabbitMQ安装配置
RabbitMQ3.8.3+Erlang22.3百度网盘下载地址,提取码:68pq
- 安装Erlang类库
yum -y install ncurses-devel
yum -y install openssl-devel
yum -y install unixODBC-devel
yum -y install gcc-c++
yum -y install unixODBC unixODBC-devel wxBase wxGTK SDL wxGTK-gl
- 安装Erlang
rpm -ivh esl-erlang_22.3.2-1_centos_7_amd64.rpm
# 验证命令
erl
- 安装RabbitMQ
yum -y install rabbitmq-server-3.8.3-1.el7.noarch.rpm
- 启动、停止、查看状态
systemctl start/stop/status/restart rabbitmq-server.service
- 注册为开机启动
systemctl enable rabbitmq-server
systemctl disable rabbitmq-server
- 安装界面插件
rabbitmq-plugins enable rabbitmq_management
- 开放guest外部访问
vim /etc/rabbitmq/rabbitmq.config
[{rabbit, [{loopback_users, []}]}].
登录界面管理:http://IP:15672/
这里需要把5672/15672端口防火墙开放,如果用阿里云服务器,记得设置开放端口安全组
安装成功
-
日志文件/var/log/rabbitmq/
rabbit@{hostname}.log:输出rabbitmq运行相关的信息,如网络流量、用户、交换器、队列等信息
rabbit@{hostname}-sasl.log:Erlang运行相关信息 卸载RabbitMQ
yum -y remove rabbitmq-server.noarch
# 查找相关目录删除如
rm -rf /usr/lib64/erlang
rm -rf /var/lib/rabbitmq
rm -rf /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.3/
rm -rf /etc/rabbitmq/
rm -rf /var/log/rabbitmq
5. RabbitMQ相关命令
- 查看用户、添加用户、设置角色、修改密码、删除用户
rabbitmqctl list_users
rabbitmqctl add_user fzb fzb2019
rabbitmqctl set_user_tags fzb administrator
rabbitmqctl change_password fzb fzb2020
rabbitmqctl delete_user fzb
-
五类角色
- 超级管理员(administrator):可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
- 监控者(monitoring):可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)。
- 策略制定者(policymaker):可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
- 普通管理者(management):仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
- 其他:无法登陆管理控制台,通常就是普通的生产者和消费者。
赋予用户vhost权限
rabbitmqctl set_permissions -p / \fzb ".*" ".*" ".*"
p / :赋予默认虚拟机权限
\fzb:被赋予权限用户
".*" ".*" ".*":分别映射配置、写、读
".*" "checks-.*" "":匹配任何队列和交换器、只匹配名字已checks-开头的队列和交换器、不匹配队列和交换器
读:有关消费消息的任何操作
写:发布消息
配置:队列和交换器的创建和删除
- 查看所有用户权限、查看指定用户权限、清除权限
rabbitmqctl list_permissions
rabbitmqctl list_user_permissions fzb
rabbitmqctl clear_permissions -p / fzb
- 查看vhost、创建vhost、删除vhost
rabbitmqctl list_vhosts
rabbitmqctl add_vhost vhost_fzb
rabbitmqctl list_queues -p vhost_fzb
vhost是运行在rabbit中的虚拟主机,有一个默认的虚拟主机“/”,vhost是rabbitmq分配权限的最小细粒度。
一个rabbitmq服务器上可以运行多个vhost,以便于适用不同的业务需要,这样做既可以满足权限配置的要求,也可以避免不同业务之间队列、交换机的命名冲突问题,因为不同vhost之间是隔离的。
- 查看队列名字、消息数目、消费者数目、内存、属性
rabbitmqctl list_queues -p vhost_fzb name messages consumers memory durable auto_delete
- 查看交换器名字、类型、属性
rabbitmqctl list_exchanges name type durable auto_delete
- 查看绑定(该命令不接受-p之外的命令)
rabbitmqctl list_bindings -p vhost_fzb
每一个不曾起舞的日子都是对生命的辜负