原文地址:https://blog.csdn.net/u012654963/article/details/76417613

应用RabbitMQ,我们可以根据需求选择5种队列之一。

一、简单队列

P:消息的生产者 
C:消息的消费者 
红色:队列

简单队列的生产者和消费者关系一对一 
但有时我们的需求,需要一个生产者,对应多个消费者,那就可以采用第二种模式

二、Work模式

一个生产者、2个消费者。 
但MQ中一个消息只能被一个消费者获取。即消息要么被C1获取,要么被C2获取。这种模式适用于类似集群,能者多劳。性能好的可以安排多消费,性能低的可以安排低消费。

但如果面对我需要多个消费者都对这一消息进行消费的需求,这种模式显然就不适用了。那就可以采用第三种模式:

三、订阅模式

1、1个生产者,多个消费者 
2、每一个消费者都有自己的一个队列 
3、生产者没有将消息直接发送到队列,而是发送到了交换机 
4、每个队列都要绑定到交换机 
5、生产者发送的消息,经过交换机,到达队列,实现,一个消息被多个消费者获取的目的 
这种模式可以满足消费者发布一个消息,多个消费者消费同一信息的需求,但C1、C2消费的都是相同的数据,有时我们需要C1和C2消费的信息只有部分差异,比如我们需求:C1消费增加的数据,C2消费编辑、增加和删除的数据。 
这是可以引入第四种模式:

四:路由模式:

路由模式是在订阅模式基础上的完善,可以在生产消息的时候,加入Key值,与key值匹配的消费者消费信息。

但路由模式中,就如三中提到的C1、C2、如果C2对应的类型更多,就需要写很多key值。但其实它只与C1有一点差别。那就可以考虑第五种模式:

五:通配符模式

通配符模式是在路由模式的升级,他允许key模糊匹配。*代表一个词,#代表一个或多个词。通过通配符模式我们就可以将C1对应的一个key准确定为item.add。而C2我们就不需要一一写出key值,而是用item.#代替即可。

【RabbitMQ】——5种队列(转)的更多相关文章

  1. RabbitMQ 七种队列模式

    (1)简单模式(Hello World) 做最简单的事情,一个生产者对应一个消费者,RabbitMQ相当于一个消息代理,负责将A的消息转发给B 应用场景: 将发送的电子邮件放到消息队列,然后邮件服务在 ...

  2. RabbitMQ几种队列模式

  3. 干货!基于SpringBoot的RabbitMQ多种模式队列实战

    目录 环境准备 安装RabbitMQ 依赖 连接配置 五种队列模式实现 1 点对点的队列 2 工作队列模式Work Queue 3 路由模式Routing 4 发布/订阅模式Publish/Subsc ...

  4. RabbitMQ详解(三)------RabbitMQ的五种队列

    上一篇博客我们介绍了RabbitMQ消息通信中的一些基本概念,这篇博客我们介绍 RabbitMQ 的五种工作模式,这也是实际使用RabbitMQ需要重点关注的. 这里是RabbitMQ 官网中的相关介 ...

  5. RabbitMQ 详解 五种队列-SpiritMark

    上次带大家看了一下RabbitMQ的基本概念,今天我们来详解一下 RabbitMQ的五种队列,也算是一个笔记,如果对您有帮助,可以关注一下,便于下次光顾! 文章目录 1.简单队列 2.work 模式 ...

  6. rabbitmq批量删除队列

    有些时候,我们需要批量的删除rabbitmq中的队列,尤其是对于那些客户端配置了队列不存在时自动创建,但断开时不自动删除的应用来说. rabbitmqctl并没有包含直接管理队列的功能,其提供的vho ...

  7. RabbitMQ : 几种Exchange 模式

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

  8. .NET 环境中使用RabbitMQ RabbitMQ与Redis队列对比 RabbitMQ入门与使用篇

    .NET 环境中使用RabbitMQ   在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的 ...

  9. 基于rabbitMQ 消息延时队列方案 模拟电商超时未支付订单处理场景

    前言 传统处理超时订单 采取定时任务轮训数据库订单,并且批量处理.其弊端也是显而易见的:对服务器.数据库性会有很大的要求,并且当处理大量订单起来会很力不从心,而且实时性也不是特别好 当然传统的手法还可 ...

随机推荐

  1. Bash:精华

    # 声明索引数组(以从0开始的整数做索引的数组).以下三种等效. declare -a array declare array=(this is numeric array ) array=(this ...

  2. Bug : Cannot evaluate ...toString()

  3. Java中关键字static的使用与作用

    1.static的意义 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和 ...

  4. 0.1Linux系统开发Angular项目一一首次运行环境的安装(chrome ,terminator,git,node)

    首先,保证你已经安装了虚拟机(虚拟机可以用virturalbox或者VM)并安装了ubuntu镜像! 安装Chrome浏览器 安装terminator(可以多开)代替原来的命令行工具 sudo apt ...

  5. MS SQL大值数据类型varchar(max)、nvarchar(max)、varbinary(max)

    在MS SQL2005及以上的版本中,加入大值数据类型(varchar(max).nvarchar(max).varbinary(max) ).大值数据类型最多可以存储2^30-1个字节的数据. 这几 ...

  6. spark 学习_rdd常用操作

    [spark API 函数讲解 详细 ]https://www.iteblog.com/archives/1399#reduceByKey [重要API接口,全面 ] http://spark.apa ...

  7. tensorflow 高级api使用分布式之配置

    """Constructor. Sets the properties `cluster_spec`, `is_chief`, `master` (if `None` i ...

  8. 项目IDEA启动配置

    在所有java启动项中加入 -Djute.maxbuffer=2048000 tomcat 在catalina.bat 中第一行加入 set JAVA_OPTS=-Djute.maxbuffer=20 ...

  9. Missing artifact org.hibernate:hibernate-core:jar:4.3.0.Final

    Missing artifact org.hibernate:hibernate-core:jar:4.3.0.Final

  10. java并发:CopyOnWriteArrayList简单理解

    Java集合的快速失败机制 “fail-fast” "fail-fast"是java集合的一种错误检测机制,当多个线程对集合进行结构上的改变的操作时,有可能会产生 fail-fas ...