谷粒商城实战笔记-252~254-商城业务-消息队列-Exchange-三种type的使用

发布于:2024-08-25 ⋅ 阅读:(154) ⋅ 点赞:(0)

一,252-商城业务-消息队列-Direct-Exchange

这一节的内容是实操-direct exchange的信息发送。

1,创建4个队列

  • gulimall
  • gulimall.news
  • gulimall.emps
  • gulixueyuan.news

在这里插入图片描述

2,exchange绑定queue

如下,分别把4个queue绑定到exchange。
在这里插入图片描述
最终效果如下。

在这里插入图片描述

3,发送消息

如下图所示,发送一条消息,发送时指定routing keygulimall.news
在这里插入图片描述

结果如下。

在这里插入图片描述
因为是direct,所以消息只会发送给bindingrouting keys完全匹配的队列,只发给队列gulimall.news

二,253-商城业务-消息队列-Fanout-Exchange

1,创建一个type为fanout的exchange

在这里插入图片描述

2,给这个exchange绑定几个queue

在这里插入图片描述

3,发送消息

给这个exchange发送消息,结果线上消息会发送给这个exchange绑定的所有queue,和routing key完全没有关系,只和binding有关系。
在这里插入图片描述

三,254-商城业务-消息队列-Topic-Exchange

1,创建一个topic类型的exchange

在这里插入图片描述

2,绑定queue

在这里插入图片描述
结果如下:

在这里插入图片描述

3,发送消息1

在这里插入图片描述
如上,发送的routing keys是gulimall.news,在topic类型下,根据我们定义的binding,能匹配到4个queue:

  • gulimall、gulimall.news、gulimall.emps,匹配模式gulimall.#
  • gulixueyuan.news,匹配模式*.news

所以这条消息会发送给4个queue。

4,发送消息2

在这里插入图片描述
如上图,这里有所不同的是,我们并没有明确定义这样:

  • binding:topic.news
  • 但是其能匹配这个binding: *.news
  • 所以只会发送给queue: gulixueyuan.news。

5,topic类型的exchange

这张图片展示的是一个主题交换机(Topic Exchange),它是RabbitMQ中一种常用的交换机类型。主题交换机通过模式匹配来决定将消息路由到哪个队列。

在图片中,我们能看到四个队列(Queues)分别绑定了不同的模式(Binding Key)。这些模式都是由单词组成的,单词之间用点号"."分隔。同时,主题交换机也支持两种通配符:

  • #:匹配零个或多个单词;
  • *:匹配一个单词。

例如,队列1绑定了"usa.#“,这意味着它将接收所有以"usa.“开头的消息;队列2绑定了”.news”,表示它将接收所有包含"news"作为最后一个单词的消息;队列3绑定了"#.weather",意味着它将接收所有以".weather"结尾的消息;队列4绑定了"europe.#",因此它将接收所有以"europe."开头的消息。

接下来,我们看几个例子:

  1. 当一条消息的路由键(Routing Key)为"usa.news"时:

    • 队列1(绑定键为"usa.#")可以接受,因为"usa.news"满足以"usa."开头;
    • 队列2(绑定键为".news")也可以接受,因为它包含了"news"作为最后一个单词;
    • 队列3(绑定键为"#.weather")不能接受,因为"usa.news"没有以".weather"结尾;
    • 队列4(绑定键为"europe.#")也不能接受,因为"usa.news"并没有以"europe."开头。
  2. 当一条消息的路由键(Routing Key)为"europe.weather"时:

    • 队列1(绑定键为"usa.#")不能接受,因为"europe.weather"并不以"usa."开头;
    • 队列2(绑定键为".news")可以接受,因为它包含了"weather"作为最后一个单词;
    • 队列3(绑定键为"#.weather")也能接受,因为"europe.weather"是以".weather"结尾的;
    • 队列4(绑定键为"europe.#")可以接受,因为"europe.weather"以"europe."开头。

总的来说,主题交换机允许你定义一系列的过滤规则,使得消息能够更灵活地被路由到合适的队列。这对于处理具有相似性的不同消息非常有用,比如上述例子中的美国新闻和欧洲天气预报。


网站公告

今日签到

点亮在社区的每一天
去签到