- 安装
- 概念介绍
- 交换器类型
- direct
- topic
安装Rabbitmq需要Erlang环境,如果单独安装,首先需要安装该环境,本系列采用 Docker安装 环境安装和介绍。
# 查找存储库 docker search rabbitmq # 输出(本系列使用的这个) NAME DEscriptION STARS OFFICIAL AUTOMATED rabbitmq RabbitMQ is an open source multi-protocol me… 4110 [OK] # 下载并运行 docker run -it -p 15672:15672 -p 5672:5672 rabbitmq /bin/bash # 启用web管理插件,这样就可以使用 ip:15672来访问web管理端了(见下图),账号密码相同:guest rabbitmq-plugins enable rabbitmq_management # 开放端口号 firewall-cmd --add-port=15672/tcp --permanent --zone=public firewall-cmd --reload概念介绍
首先看下模型框架图:
- Producer:生产者,就是发送消息的一方
- Consumer:消费者,就是接收消息的一方
- Broker:消息服务
- Exchange:交换器,引导消息投递到哪个队列中
- Queue:队列,消息存储的地方
交换器类型
- 消息一般包括2部分:消息体(payload)和标签(label),label用来描述该消息,比如交换器的名称和路由键,payload才是真正的消息体。
- 绑定到同一队列的消费者,会轮询消费消息,不是广播的形式,广播模式需要单独二次开发。
一共6种,常用的有3种:
- fanout:把消息路由到所有绑定到该交换器的队列中,无视BindingKey。
- direct:把消息路由到BindingKey和RoutingKey完全一致的队列中
- topic:采用模糊匹配,以点(.)分割单词为key值,支持两个特殊字符串,#匹配0-n个单词,*匹配1个单词。
- headers:不常用
- system:不常用
- custom:不常用
direct
- BindingKey:把交换器和队列绑定起来
- RoutingKey:生产者发送消息时需要指定该key,BindingKey和RoutingKey匹配时,消息会发送到对应的队列中
如果在发送消息的时候设置路由键为" info" 或者"debug",消息 只会路由到Queue2 。 如果以其他的路由键发送消息,则消息不会路由到这两个队列中。
- 路由键为" com.rabbitmq.client" 的消息会同时路由到 Queuel 和 Queue2
- 路由键为" com.hidden.client" 的消息只会路由到 Queue2 中
- 路由键为" com.hidden.demo" 的消息只会路由到 Queue2 中
- 路由键为"java.rabbitmq.demo" 的消息只会路由到 Queuel 中
- 路由键为" java.util.concurrent" 的消息将会被丢弃或者返回给生产者(需要设置mandatory 参数) ,因为它没有匹配任何路由键



