RabbitMQ安装
docker run -di --name=rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 rabbitmq:management
登录mq页面,测试安装是否成功: ip:15672
登录账号: guest 密码: guest
-学习应该从了解他的工作方式开始
前提: 就是要知道的 交换器 exchange, 队列queue
交换器:用来接收消息, 并分发给哪个队列, 一个或多个
队列: 用来存 消息的, 经过交换器的消息, 就会存到各个队列里, 一个或多个
-两个概念:
生产者: 通过rebbitmq生产消息 一个或多个
消费者: 使用rebbitmq里面的消息 一个或多个
-RabbitMQ模式: 3种, 交换器的不同分发规则
前提:需要在 (rabbitmq的可视化界面 ip:15672 端口 ) 添加一个队列
打开页面后,找到 Queues -> add a new queue中添加, 写队列名字 点击 Add Queue 即可添加
1 直接模式: Direct Exchange
可以理解为, 生产者直接将消息发送给了队列
指的是 交换器里有个 Direct Exchange[名字为 空字符串 ""的交换器], 只要是发送到
Direct Exchange的消息, 都会被转发到 RouteKey(路由)中指定的queue
该交换器的名字为 空字符串 ""
直接模式的消费者
* 特点:
* 带有负载均衡的功能
* 多个消费者时, 根据项目的启动顺序,每次发送给一个消费者去消费,
* 例如:
* 3个消费者
* 第一次个消息
* 由第1消费者消费
* 第二个消息
* 由第2个消费者消费
* 第三个消息
* 又第3个消费者消费
* 而这1,2,3消费者就是不同启动顺序产生的先后.
,2. 分裂模式 Fanout Exchange - 用的少
特点: 一个消息, 同时分发给多个消费者
缺点: 消息一经产生, 会将消息推送给所有队列 , 无法做到 选择性推送, 也就是无法配置推送规则
在可视化页面选
Queues : 添加你要的多个 队列
Exchanges -> add a new exchange -> 输入名字, type选择Fanout -> 然后点击 add exchange
-> 之后再列表中找到 添加好的 交换器 名字点击, 进入到绑定 队列
-> 找到 To queue 表单, 填写 你添加的队列, 点击" bind "即可
3. 主题模式 - Topic - 常用
学习主题模式, 需要了解 他是 分裂模式的加强版.
他可以通过 "表达式" 来匹配 要将消息发送给谁(谁值得是队列, 发送给哪个队列)
表达式不用 专门去学. . . 了解常用两个 符号
1). #: 警号 匹配 表达式任意多级路径, 任意名.
2). *: 星号, 匹配 表达式一级, 任意名
前面说过 有个routingKey, 此时的 "表达式" , 就是匹配 routingKey的
a. 进入到rabbitmq 管理页面
找到 exchanges -> Add a new exchange(创建一个交换器) -> 在列表中找到新创建的交换器点击 -> add binding from this exchange(为交换器匹配队列,并配置规则)
b. 在To queue 表单 输入添加的 队列 queue名称
在Routing key: 表单输入匹配规则.
例如:
product.#
#.product
3. 点击Bind 按钮
注: 用时, 表达式最好匹配一个全都发送的, 也就是所有queue 队列都能接收的表达式
来源:CSDN
作者:骨灰级菜鸟-程序猿
链接:https://blog.csdn.net/xiaoguaihu12/article/details/101170952