基本介绍
概述
RabbitMQ是一个广泛使用的消息服务器,采用Erlang语言编写,是一种开源的实现 AMQP(高级消息队列协议)的消息中间件;
- RabbitMQ 拥有数万名用户,是最受欢迎的开源消息代理之一。从T-Mobile 到Runtastic,RabbitMQ 在全球范围内的小型初创公司和大型企业中得到使用。
- RabbitMQ 是轻量级的,易于在本地和云中部署。它支持多种消息传递协议和流媒体。 RabbitMQ 可以部署在分布式和联合配置中,以满足高规模、高可用性的需求。
- RabbitMQ 运行在许多操作系统和云环境上,并为大多数流行语言提供了广泛的开发人员工具。
RabbitMQ最初起源于金融系统,它的性能及稳定性都非常出色;
AMQP协议(http://www.amqp.org),即 Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
学习网址
官网:RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQ
Github:https://github.com/rabbitmq
消息中间件
简单来说,消息中间件就是指保存数据的一个容器(服务器),可以用于两个系统之间的数据传递。消息中间件一般有三个主要角色:生产者、消费者、消息代理(消息队列、消息服务器);
MQ=Message Queue
生产者发送消息到消息服务器,然后消费者从消息代理(消息队列)中获取数据并进行处理;
应用场景
应用解耦(异步)
下订单---向MQ 发消息--》积分系统,手机短信系统接收消息
同步是阻塞的(会造成等待),异步是非阻塞的(不会等待);
大流量高并发请求、批量数据传递,就可以采用异步处理,提升系统吞吐量;
系统解耦
多个系统之间,不需要直接交互,通过消息进行业务流转;
流量削峰
MQ 数据是只有一条数据在使用中。 在很多存在并发,而又对数据一致性要求高,而且对性能要求也高的场景,如何保证,那么MQ就能起这个作用了。不管多少流量进来,MQ都会让你遵守规则,排除处理,不会因为其他原因,导致并发的问题,而出现很多意想不到脏数据。
基于Docker的快速安装
使用docker查询rabbitmq的镜像
docker search rabbitmq
安装name为rabbitmq的这里是直接安装最新的,如果需要安装其他版本在rabbitmq后面跟上版本号即可
docker pull rabbitmq
启动mq
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5673:5672 rabbitmq
需要注意的是
-p 5673:5672
解释:-p 外网端口:Docker的内部端口 ,你们可以改成自己的外网端口号,我这里映射的外网端口是5673那么程序连接端口就是用5673
通过docker ps -a
查看部署的mq容器id,在通过 docker exec -it 容器id /bin/bash
进入容器内部在 运行:rabbitmq-plugins enable rabbitmq_management
命令执行完毕后,web管理界面就启用了,打开浏览器输入地址http://ip:15672/
默认用户名和密码都是guest
常见使用命令
rabbitmqctl 是一个管理命令,可以管理rabbitmq的很多操作。
用户管理包括增加用户,删除用户,查看用户列表,修改用户密码。
这些操作都是通过rabbitmqctl管理命令来实现完成。
查看帮助:
rabbitmqctl add_user --help |
相应的命令
查看当前用户列表
rabbitmqctl list_users |
新增一个用户
语法:rabbitmqctl add_user Username Password 示例: rabbitmqctl add_user admin 123456 |
设置用户角色
rabbitmqctl set_user_tags User Tag 示例:rabbitmqctl set_user_tags admin administrator |
说明:此处设置用户的角色为管理员角色
设置用户权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" |
说明:此操作是设置admin用户拥有操作虚拟主机/下的所有权限
查看用户权限
./rabbitmqctl list_permissions |