首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MQ教程 | Exchange(交换机)介绍(六)

MQ教程 | Exchange(交换机)介绍(六)

作者头像
Tinywan
发布2020-08-06 09:47:42
1.3K0
发布2020-08-06 09:47:42
举报
文章被收录于专栏:开源技术小栈开源技术小栈

Exchange

Producer 将消息发送到 Exchange ,由 Exchange 将消息路由到一个或多个 Queue 中(或者丢弃)。Exchange 根据 Routing Key 和 Binding Key 将消息路由到 Queue。不同类型的 Exchange 的路由规则不同。消息队列 AMQP 版目前支持三种类型的 Exchange:

  • Direct Exchange
  • Topic Exchange
  • Fanout Exchange

Direct Exchange

  • 路由模式 根据 Binding Key = Routing Key 的规则路由消息。
  • 使用场景 区分发往同一个 Exchange 的消息。
  • 示例 图 1. Direct Exchange

Direct Exchange 分别与 Queue A 和 Queue B 绑定。Consumer 可以从 Queue A 中拉取所有图片(img)创建(create)消息,从 Queue B 中拉取所有图片(img)日志(log)消息。

  1. Direct Exchange 绑定 Queue:
    • Direct Exchange 和 Queue A 的 Binding Key 为 img.create。
    • Direct Exchange 和 Queue B 的 Binding Key 为 img.log。
  2. Producer 向 Direct Exchange 发送消息:
    • 消息 A 的 Routing Key 为 img.create。
    • 消息 B 的 Routing Key 为 img.log。
  3. Direct Exchange 根据 Binding Key = Routing Key 的规则路由消息:
    • Routing Key 为 img.create 的消息 A 路由至 Binding Key 为 img.create 的 Queue A。
    • Routing Key 为 img.log 的消息 B 路由至 Binding Key 为 img.log 的 Queue B。

Topic Exchange

  • 路由规则 根据通配符匹配路由消息。
    • 星号(*)代表一个单词(例如:cn)。
    • 井号(#)代表零个、一个或多个单词,单词间通过英文句号(.)分隔(例如:cn.zj.hz)。
  • 使用场景 通过 Topic 对消息进行区分。
  • 示例 图 2. Topic Exchange

Topic Exchange 分别与 Queue A 和 Queue B 绑定。Consumer 可以从 Queue A 中拉取所有中国(cn)杭州(hz)的文件(files),从 Queue B 中拉取所有中国(cn)商店(store)的文件(files)。

  1. Topic Exchange 绑定 Queue:
    • Topic Exchange 和 Queue A 的 Binding Key 为 files.cn.hz.#。
    • Topic Exchange 和 Queue B 的 Binding Key 为 files.cn.*.store。
  2. Producer 向 Topic Exchange 发送消息:
    • 消息 A 的 Routing Key 为 files.cn.hz。
    • 消息 B 的 Routing Key 为 files.cn.hz.store。
    • 消息 C 的 Routing Key 为 files.cn.sz.store。
  3. Topic Exchange 根据通配符匹配的规则路由消息:
    • Routing Key 为 files.cn.hz 的消息 A 路由至 Binding Key 为 files.cn.hz.# 的 Queue A。
    • Routing Key 为 files.cn.hz.store 的消息 B 路由至 Binding Key 为 files.cn.hz.# 的 Queue A 和 Binding Key 为 files.cn.*.store 的 Queue B。
    • Routing Key 为 files.cn.sz.store 的消息 C 路由至 Binding Key 为 files.cn.*.store 的Queue B。

Fanout Exchange

  • 路由规则 Fanout Exchange 无视 Routing Key 和 Binding Key 的匹配规则,将消息投递至所有绑定的 Queue。
  • 使用场景 广播消息。
  • 示例 图 3. Fanout Exchange

Fanout Exchange 将消息投递至所有绑定的 Queue,Consumer 可以从所有 Queue 中拉取同一消息。

  1. Fanout Exchange 绑定 Queue: Fanout Exchange 和 Queue A、Queue B、Queue C 的 Binding Key 都可以为任意值。
  2. Producer 向 Fanout Exchange 发送消息: 消息 A 的 Routing Key 可以为任意值。
  3. Fanout Exchange 将消息路由至所有绑定的 Queue: Routing Key 为任意值的消息 A 分别路由至 Binding Key 为任意值的 Queue A、Queue B、Queue C。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 万少波的播客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Exchange
  • Direct Exchange
  • Topic Exchange
  • Fanout Exchange
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档