美文网首页
RabbitMQ的exchange介绍

RabbitMQ的exchange介绍

作者: xdm | 来源:发表于2020-06-18 17:34 被阅读0次

    rabbitmq是基于AMQP通信协议实现的高效的消息中间件,在rabbitmq中,exchange交换机扮演着接收生产者生产的消息的角色。同时exchange交换机还需要将接收到的消息传递给queue队列进行存储或消费,在将exchange中的消息传递给queue的过程中,exchange扮演着重要的角色,不同类型的exchange配合着routing_key就能按照exchange类型对应的路有规则将消息传递到指定的某个或者某些queue队列。

    exchange分类

    rabbitmqexchange有四种类型,分别是directfanouttopicheaders,下面将主要介绍directfanouttopic三种常用类型的exchange的路有规则。

    direct类型

    对于direct类型的exchange,在接收到生产者发送的消息时会将消息路由给与该exchange绑定的且与该消息的routing_key同名的queue队列。如果exchange上未绑定与routing_key同名的queue,消息将会被抛弃。

    对于rabbitmq的每一个vhost,都存在一个默认名称为AMQP default且不能被删除的exchange,这个默认的exchange的类型就是Direct,这个exchange会隐式绑定到vhost的每个queue队列上,并且任何queue队列都不能显式地绑定或解除绑定该默认exchange。如果需要使用该默认exchange接收并路由消息,只需在发消息时指定exchange=""即可。

    27b15095-5d93-3d7c-bc34-2c50aba7ea1f

    fanout类型

    8df753ef-209c-353d-9dd6-fe2710d7856b

    对于fanout类型的exchange交换机,消息路由的处理非常简单,fanout类型的exchange会将接收到的消息路由投递到所有与其绑定的queue队列上,此种类型exchange消息路由与routing_key无关。

    topic类型

    59ec574a-818a-3bb9-a774-a52e3cf44643

    文档,发送到主题交换机(topic exchange)的消息不可以携带随意什么样子的路由键(routing_key),它的路由键必须是一个由.分隔开的词语列表。这些单词随便是什么都可以,但是最好是跟携带它们的消息有关系的词汇。以下是几个推荐的例子:"stock.usd.nyse", "nyse.vmw", "quick.orange.rabbit"。词语的个数可以随意,但是不要超过255字节。

    exchangequeue的绑定键也必须拥有同样的格式。主题交换机背后的逻辑跟直连交换机很相似——一个携带着特定路由键的消息会被主题交换机投递给绑定键与之想匹配的队列。但是它的绑定键和路由键有两个特殊应用方式:

    • * (星号) 用来表示一个单词
    • # (井号) 用来表示任意数量(零个或多个)单词

    相关文章

      网友评论

          本文标题:RabbitMQ的exchange介绍

          本文链接:https://www.haomeiwen.com/subject/zpauxktx.html