docker的安装使用可参考上篇文章Docker安装与Nginx映射配置
RabbitMq说明
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而聚类和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。--[维基百科]
RabbitMq使用
RabbitMq在docker中安装
- 拉取镜像
docker pull rabbitmq:management
- 启动
docker run -d --name docker_rabbitmq \
-p 5671:5671 -p 5672:5672 -p 4369:4369 \
-p 15671:15671 -p 15672:15672 -p 25672:25672 \
rabbitmq:management
- 端口说明
4369:erlang发现端口
5672:amqp客户端端口
15672:http管理界面端口
25672:clustering服务端内部通信端口
- 自动重启
docker update docker_rabbitmq --restart=always
- 查看日志
docker logs -f [container/id]
- 进入
docker exec -it docker_rabbitmq bash
- 添加用户(默认guest)
rabbitmqctl add_user [username] [password]
- 授权
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
- 角色
rabbitmqctl set_user_tags root administrator
- 查看用户
rabbitmqctl list_users
使用说明
登录管理界面
- 域名+端口,登录用户。默认端口15672,默认用户名guest,密码guest。实际情况根据docker端口映射和配置而定
常用发布订阅模式
direct
特点:点对点发送消息
示例:
- 创建direct交换机Add a new exchange:direct-exchange01
- 创建队列Add a new queue:queue01,queue02
- 交换机与队列绑定Bindings
- 测试Publish message
- 注意:ACK标识接收并消费消息,NACK则相反,消息仍在队列中
fanout
特点:不论rountkey,所有队列都可接收消息
topic
根据键名匹配所有符合的队列
- 交换机:topic-exchange01
- 绑定队列
- queue01:
prekey01.#
前缀为prekey01的所有队列接收消息,#标识匹配一个或多个单词,*标识匹配一个 - queue02:
#.sufkey02
后缀为sufkey02的所有队列接收消息 - queue03:
#.sufkey03
后缀为sufkey03的所有队列接收消息
- queue01:
- 测试
只有queue01收到
只有queue02收到
queue01,queue03收到
更多操作可参考官方文档