简介
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
RabbitMQ提供了可靠的消息机制、跟踪机制和灵活的消息路由,支持消息集群和分布式部署。适用于排队算法、秒杀活动、消息分发、异步处理、数据同步、处理耗时任务、CQRS等应用场景。
部署RabbitMQ
-
rabbitmq:management
: 带web管理界面 -
rabbitmq
:不带web管理界面
这里拉取rabbitmq:management
镜像
docker pull rabbitmq:management
Run
docker run -d --hostname=rabbitmqhost --name rabbitmq -p 5672:5672 -p 15672:15672 -v /dockerdata/rabbitmq/data:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_VHOST=v_rabbitmqhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:management
映射5672客户端通信端口,和15672web管理端口。
参数 | 含义 |
---|---|
hostname | 指定rabbitmq的Host名称,保持持久化 |
-p 5672 | 客户端通信端口 |
-p 15672 | webUI管理端口 |
-v /var/lib/rabbitmq | 持久化,和hostname最好一起使用 |
RABBITMQ_DEFAULT_VHOST | 容器Host名称 |
RABBITMQ_DEFAULT_USER/RABBITMQ_DEFAULT_PASS | 设置账号密码,不配置的话 默认guest/guest |
简化版
docker run -d --hostname=rabbitmqhost --name rabbitmq -p 5672:5672 -p 15672:15672 -v /dockerdata/rabbitmq/data:/var/lib/rabbitmq rabbitmq:management
进入RabbitMQ
docker exec -it rabbitmq bash
命令 | 含义 |
---|---|
rabbitmq-plugins enable rabbitmq_management | 启用Web控制台,此镜像默认启用;如果使用rabbitmq镜像此命令开启 |
rabbitmqctl status | 查看RabbitMQ状态 |
rabbitmqctl add_user username password | 添加用户 |
rabbitmqctl set_user_tags username administrator | 赋予用户管理员权限 |
rabbitmqctl list_users | 查看用户列表 |
rabbitmqctl delete_user username | 删除用户 |
rabbitmqctl oldPassword Username newPassword | 修改用户密码 |
访问rabbitmq:15672
,使用 guest/guest
登录