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. xposed 原理分析

    1.添加hook方法 首先是init进程打开 app_process,然后进入XposedInit.java main() - > initForZygote() 加入对ActivityThre ...

  2. 阿里云ECS服务器,修改实例密码,查看CPU核数,内存,阿里云服务器关机了怎么办?

    新买的ECS服务器是没有密码的,需要重置密码(root,P@ssw0rd),并重启: 查看CPU核数和内存: 阿里云服务器关机了,不用怕,登录阿里云,可以启动和关闭

  3. 第36课 经典问题(下)----关于string的疑问

    实例1: 下面的代码输出什么,为什么? #include <iostream> #include <string> using namespace std; int main( ...

  4. docker使用,包括有nvidia-docker

    docker run 命令:https://www.runoob.com/docker/docker-run-command.html docker run -it ubuntu:15.10 /bin ...

  5. day64_10_8 vue的导入

    一.简介 vue是一个渐进式的js框架.具体介绍查看官网: https://cn.vuejs.org 在vue框架中,有两个文件,当在开发阶段时使用完整版vue,因为有报错信息,而在上市阶段可以使用m ...

  6. 开源项目 13 log4net

    原文:https://www.cnblogs.com/pudefu/p/9300697.html 官方的api: http://logging.apache.org/log4net/release/s ...

  7. MySQL实战45讲学习笔记:第二十七讲

    一.一主多从的切换正确性 在前面的第24.25和26篇文章中,我和你介绍了 MySQL 主备复制的基础结构,但这些都是一主一备的结构. 大多数的互联网应用场景都是读多写少,因此你负责的业务,在发展过程 ...

  8. Java连载8-基本数据类型2

    一.基本数据类型 1.字符串“abc”不属于基本数据类型,属于引用数据类型 2. 基本数据类型   占用空间大小(单位:字节) byte                1 short          ...

  9. HttpUtility.HtmlDecode ,HttpUtility.HtmlEncode 与 Server.HtmlDecode ,Server.HtmlEncode 与 HttpServerUtility.HtmlDecode , HttpServerUtility.HtmlEncode

    HtmlEncode: 将 Html 源文件中不允许出现的字符进行编码,通常是编码以下字符"<".">"."&" 等. ...

  10. php中in_array函数的坑

    由于PHP是弱类型语言,所以有自动类型转换 例子 $array = [0, 1, 2, '3']; var_dump(in_array('abc', $array)); //true var_dump ...