Docker安装RabbitMq

893 阅读2分钟

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收到

只有queue02收到

queue01,queue03收到


更多操作可参考官方文档