RabbitMQ消息交换模式简介

栏目: 后端 · 发布时间: 5年前

内容简介:RabbitMQ是AMQP的一个典型实现,它消息发布者的消息发布到Exchange上,同时需要制定routingkey,可以通过指定交换机的不同模式实现不同的行为。RabbitMQ提供了四种Exchange:fanout,direct,topic和header。其中header模式在实际使用中较少,本文只对前三种模式进行比较。Direct Exchange是RabbitMQ默认的交换机模式,也是最简单的模式,根据key全文匹配去寻找队列。规则如下:

RabbitMQ是AMQP的一个典型实现,它消息发布者的消息发布到Exchange上,同时需要制定routingkey,可以通过指定交换机的不同模式实现不同的行为。

RabbitMQ提供了四种Exchange:fanout,direct,topic和header。其中header模式在实际使用中较少,本文只对前三种模式进行比较。

Direct模式(点对点通讯):

Direct Exchange是RabbitMQ默认的交换机模式,也是最简单的模式,根据key全文匹配去寻找队列。规则如下:

  1. 发布到exchange的消息通过routingkey的完全匹配发布到queue上。

  2. 如果routingkey不存在,则丢弃

RabbitMQ消息交换模式简介

点对点方式是最为传统和常见的通讯方式,它支持一对一、一对多、多对多、多对一等多种配置方式,支持树状、网状等多种拓扑结构。

fanout模式(多点广播):

fanout模式比较简单,广播式的,无视routingkey直接发送给所有的queue

RabbitMQ消息交换模式简介

Topic模式(发布/订阅):

RabbitMQ消息交换模式简介

任何发送到Topic Exchange的消息都会被转发到所有关心RouteKey中指定话题的Queue上

  1. 这种模式较为复杂,简单来说,就是每个队列都有其关心的主题,所有的消息都带有一个"标题"(RouteKey),Exchange会将消息转发到所有关注主题能与RouteKey模糊匹配的队列。

  2. 这种模式需要RouteKey,也许要提前绑定Exchange与Queue。

  3. 在进行绑定时,要提供一个该队列关心的主题,如"#.log.#"表示该队列关心所有涉及log的消息(一个RouteKey为"MQ.log.error"的消息会被转发到该队列)。

  4. "#"表示0个或若干个关键字,""表示一个关键字。如"log."能与"log.warn"匹配,无法与"log.warn.timeout"匹配;但是"log.#"能与上述两者匹配。

  5. 同样,如果Exchange没有发现能够与RouteKey匹配的Queue,则会抛弃此消息。


以上所述就是小编给大家介绍的《RabbitMQ消息交换模式简介》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

High Performance Python

High Performance Python

Andrew Lewis / O'Reilly Media, Inc. / 2010-09-15 / USD 34.99

Chapter 1. Introduction Section 1.1. The High Performance Buzz-word Chapter 2. The Theory of Computation Section 2.1. Introduction Section 2.2. Problems Section 2.3. Models of Computati......一起来看看 《High Performance Python》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具