RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较

  • RabbitMQ中,除了Simple Queue和Work Queue之外的所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储。
  • RabbitMQ提供了四种Exchange:fanout,direct,topic,header
  • header模式在实际使用中较少
  • **性能排序:fanout>direct>>topic。比例大约为11:10:6

    Direct Exchange

  • 任何发送到Direct Exchange的消息都会被转发到RouteKey中指定的queue
    1. 一般情况下可以使用rabbitMQ自带的Exchange:“”(该Exchange的名字为空字符串,下文称其为defaultExchange)。
    2. 这种模式下不需要将Exchange进行任何绑定(binding)操作。
    3. 消息传递时需要一个“RouteKey(其实是QueueName)”,可以简单的理解为要发送的队列名字。相当于上面提到的Simple Queue和Work Queue.
    4. 如果vhost中不存在RouteKey中指定的队列名,则该消息被抛弃。

      Fanout Exchange

  • 任何发送到Fanout Exchange的消息都会被转发到与该Exchange绑定(Binding)的Queue上
    1. 可以理解为路由表的模式
    2. 这种模式不需要RouteKey
    3. 这种模式需要提前将Exchange与Queue进行绑定,一个Exchange可以绑定多个Queue,一个Queue可以同多个Exchange进行绑定
    4. 如果接受消息的Exchange没有和任何Queue绑定,则消息被抛弃

Topic Exchange

  • 任何发送到Topic Exchange的消息都会被转发到所有关心RouteKey中指定话题的Queue上
    1. 这种模式较为复杂,简单来说,就是每个队列都有其关心的主题(通过BindingKey来说明),所有的消息都带有一个“标题”(Route Key),Exchange会将消息转发到所有关注主题能够和RouteKey模糊匹配的队列。匹配规则使用通配符“#”和“*”。
    2. 这种模式需要RouteKey,也要提前绑定Exchange与Queue。绑定之后Exchange才能够判断队列关心的主题是否与RouteKey匹配。
    3. 在进行绑定时,需要提供一个该队列关系的主题,如“#.log.#”表示该队列关系所有涉及log的消息(一个RouteKey为“MQ.log.error”的消息就会被转发给该队列)
    4. 同样,如果Exchange没有任何发现能够与RouteKey匹配的Queue,则会抛弃该消息。
  • 引用自RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较

8、RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较的更多相关文章

  1. RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较

    RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout,direct, ...

  2. RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较(转)

    RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout,direct, ...

  3. [转]RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较

    RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout,direct, ...

  4. RabbitMQ三种Exchange模式(fanout,direct,topic)的特性 -摘自网络

    RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout,direct, ...

  5. RabbitMQ三种Exchange模式

    RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四种Exchange:fanout,direct, ...

  6. 【转】RabbitMQ三种Exchange模式

    [转]RabbitMQ三种Exchange模式 RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四 ...

  7. 【RabbitMQ】三种类型交换器 Fanout,Direct,Topic(转)

    出处:https://blog.csdn.net/fxq8866/article/details/62049393 RabbitMQ服务器会根据路由键将消息从交换器路由到队列中,如何处理投递到多个队列 ...

  8. RabbitMQ : 几种Exchange 模式

    AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列.生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机.先由Exchange来接收,然后Exchang ...

  9. 【RabbitMQ】4、RabbitMQ几种Exchange 模式

    AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列.生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机.先由Exchange来接收,然后Exchang ...

随机推荐

  1. .Net Core使用Swagger来对接口文档化

    参考文档来源:https://www.cnblogs.com/yilezhu/p/9241261.html 官方地址 https://swagger.io/ 代码即接口文档,接口文档即代码 使用.ne ...

  2. JSON理解(一篇就够了)

    可以看看视频讲解,视频几十分钟就结束了 JSON 1.什么是json 其实是一种数据格式的规范,与开发的语言无关,轻量级的数据格式 全称JavaScript Object Notation 2.优点: ...

  3. 常用的架包对应的maven配置

    <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <grou ...

  4. sqlite 的去重

    1) 找到重复的记录,归类到一个新表里面 max(id) 是想要删除的record 2) 删除 delete from gallery where id in ( select theid from ...

  5. 前端/h5/React D3.js实现根据数据动态更新图形/类似进度实时变化效果

    最近接到一个需求,在满足规则下,实现类似这种展示效果,其实就是用图形反映数据(NK,一种干扰值) 运行后,它其实是不断在动的,每格都可能显示灰色或者彩色 这里一共是10个格子,每格代表一个范围边界,说 ...

  6. Educational Codeforces Round 78 (Rated for Div. 2) 题解

    Shuffle Hashing A and B Berry Jam Segment Tree Tests for problem D Cards Shuffle Hashing \[ Time Lim ...

  7. 【2019.8.12 慈溪模拟赛 T2】汪哥图(wang)(前缀和)

    森林 考虑到题目中给出条件两点间至多只有一条路径. 就可以发现,这是一个森林. 而森林有一个很有用的性质. 考虑对于一棵树,点数-边数=\(1\). 因此对于一个森林,点数-边数=连通块个数. 所以, ...

  8. JavaScript 数据结构与算法之美 - 非线性表中的树、堆是干嘛用的 ?其数据结构是怎样的 ?

    1. 前言 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手. 非线性表(树.堆),可以说是前端程序员的内功,要知其然,知其所以然. 笔者写的 JavaScript 数据结构与算法 ...

  9. Orm框架(AntOrm,Ktorm)在mac机器上如何使用代码生成

    Orm框架介绍 AntOrm 是我维护的一个开源csharp -netcore 项目 Ktorm 是一个大神开源的kotlin项目 由于我工作上都用到了,为了提高工作效率 我写了一个mac端工具帮助快 ...

  10. 记一次SQL调优

    insert优化 如果你在某一时刻有大量的insert操作,一条一条插入是非常耗时的.insert语句本身支持一次插入很多条记录,插入记录数上限受sql语句长度限制,一般一次插个几千条是没问题的.在我 ...