zoukankan      html  css  js  c++  java
  • RabbitMQ消息交换模式简介

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

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

     

    Direct模式(点对点通讯):

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

    1. 发布到exchange的消息通过routingkey的完全匹配发布到queue上。
    2. 如果routingkey不存在,则丢弃

        

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

     

    fanout模式(多点广播):

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

        

     

    Topic模式(发布/订阅):

        

    任何发送到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,则会抛弃此消息。
  • 相关阅读:
    Vpython简单例子
    我在读的书:《ACM图灵奖:19662006(第三版)计算机发展史的缩影》
    可惜啊,没见到姚期智~~
    The Sounds of Music 观后感
    终于在博客园申请开通博客了
    【引用】Python open读写文件实现脚本
    在Python中使用中文
    Discovery:深入理解计算机系统 (Ver.2) 中文版
    [导入]一个都不能少:全面认识IE插件
    [导入]午间心情
  • 原文地址:https://www.cnblogs.com/TianFang/p/10129490.html
Copyright © 2011-2022 走看看