zoukankan      html  css  js  c++  java
  • RabbitMQ(二)——模式类型

    RabbitMQ系列

    RabbitMQ(一)——简介

    RabbitMQ(二)——模式类型

    RabbitMQ(三)——简单模式

    RabbitMQ(四)——工作队列模式

    RabbitMQ(五)——发布订阅模式

    RabbitMQ(六)——路由模式

    RabbitMQ(七)——主题模式

    RabbitMQ(八)——消息确认

    RabbitMQ(九)——消息持久化

    RabbitMQ(十)——消息优先级

    上章 RabbitMQ(一)——简介 我们学习了RabbitMQ的一些简单知识,本章记录RabbitMQ各种模式的类型以及各自特点。

    RabbitMQ工作模式:

      简单模式:一个生产者,一个消费者。

      工作队列模式:一个生产者,多个消费者,每个消费者获取到的消息唯一,默认轮询获取。

      

    Exchange模式:

      发布/订阅模式(Fanout):一个生产者发送的消息会被多个消费者获取。发送到Fanout Exchange的消息都会被转发到与该Exchange绑定(binding)的所有的Queue上。这种模式不需要任何Routekey,需要提前将Exchange 与Queue进行绑定,一个Exchange可以绑定多个Queue,一个Queue可以和多个Exchange绑定。如果接收到消息的Exchange没有与任何Queue绑定,则消息会丢失。

      

      路由模式(Direct):任何发送到Direct Exchange的消息都会被转发到RouteKey指定的Queue,这种模式下不需要将Exchange进行任何绑定(binding)操作,消息传递时需要一个RouteKey,可以简单的理解为要发送到的队列名字。如果vhost中不存在该队列名,消息会丢失。

      匹配订阅模式(Topic):任何发送到Topic Exchange的消息都会被转发到所有关心RouteKey指定主题的Queue中。就是每个队列都有其关心的主题,所有的消息都带有一个标题(RouteKey),Exchange会将消息转发到所有关注主题能与RouteKey模糊匹配队列。这种模式需要Routekey并且提前绑定Exchange与Queue。在进行绑定时要提供一个该队列对应的主题。‘ # ’表示0个或若干个关键字,‘ * ’表示一个关键字。如果Exchange没有发现能够与RouteKey匹配的Queue,消息会丢失。

      headers:headers exchange主要通过发送的request message中的header进行匹配,其中匹配规则(x-match)又分为all和any,all代表必须所有的键值对匹配,any代表只要有一个键值对匹配即可。headers exchange的默认匹配规则(x-match)是any。

    简单模式和工作队列模式

      这两种模式非常简单,只涉及生产者、队列、消费者。

      生产者负责生产消息,将消息发送到队列中,消费者监听队列,队列有消息就进行消费。

      工作队列模式其实就是有多个消费者的简单模式。

      当有多个消费者时,消费者平均消费队列中的消息。

    发布/订阅、路由与主题模式

      这三种模式就要用到Exchange了。 生产者不直接与队列交互,而是将消息发送到交换机中,再由交换机将消息发送到已绑定改交换机的队列中给消费者消费。

      常用的交换机类型有 3 种:fanout、direct、topic。

      fanout不处理路由键,很像子网广播,每台子网内的主机都获得了一份复制的消息。

      发布/订阅模式就是指使用fanout交换模式。fanout 类型交换机转发消息是最快的。

      direct模式处理路由键,需要路由键匹配才能转发。 路由模式使用的是 direct 类型的交换机。

      topic:将路由键和某模式进行匹配。

      主题模式使用的是 topic 类型的交换机。

  • 相关阅读:
    oracle 分页sql
    Oracle 11g数据库详细安装步骤图解
    轻量级ORM框架——第二篇:Dapper中的一些复杂操作和inner join应该注意的坑
    轻量级ORM框架——第一篇:Dapper快速学习
    MY SQL 两种安装方式
    在本地库不连接远远程库的情况下操作远程库-----sql server
    学习Java泛型(记得通配符)
    学习java泛型(还是集合)
    学习java011902迭代器
    学习Java-继续集合
  • 原文地址:https://www.cnblogs.com/zousc/p/12725405.html
Copyright © 2011-2022 走看看