RabbitMQ  5种队列

1.简单队列

生产者 - >  Queue ->  消费者

2. Work模式

一个生产者、2个消费者。

一个消息只能被一个消费者获取。

轮询分发模式

1、消费者1和消费者2获取到的消息内容是不同的,同一个消息只能被一个消费者获取。
2、消费者1和消费者2获取到的消息的数量是相同的,一个是消费奇数号消息,一个是偶数。

公平分发 (能者多劳)

// 同一时刻服务器只会发一条消息给消费者
channel.basicQos(1);

// 表示使用手动确认模式
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);

// 监听队列,false表示手动返回完成状态,true表示自动
channel.basicConsume(QUEUE_NAME, false, consumer);

同一时刻服务器 只会发一条消息给消费者,

若为手动确认模式,则不返回确认完成状态,队列将不会再发消息给消费者, 因此能者多劳

轮询分发 :使用任务队列的优点之一就是可以轻易的并行工作。如果我们积压了好多工作,我们可以通过增加工作者(消费者)来解决这一问题,使得系统的伸缩性更加容易。在默认情况下,RabbitMQ将逐个发送消息到在序列中的下一个消费者(而不考虑每个任务的时长等等,且是提前一次性分配,并非一个一个分配)。平均每个消费者获得相同数量的消息。这种方式分发消息机制称为Round-Robin(轮询)。

公平分发 :虽然上面的分配法方式也还行,但是有个问题就是:比如:现在有2个消费者,所有的奇数的消息都是繁忙的,而偶数则是轻松的。按照轮询的方式,奇数的任务交给了第一个消费者,所以一直在忙个不停。偶数的任务交给另一个消费者,则立即完成任务,然后闲得不行。而RabbitMQ则是不了解这些的。这是因为当消息进入队列,RabbitMQ就会分派消息。它不看消费者为应答的数目,只是盲目的将消息发给轮询指定的消费者。

3.订阅模式

解读:
1、1个生产者,多个消费者
2、每一个消费者都有自己的一个队列
3、生产者没有将消息直接发送到队列,而是发送到了交换机
4、每个队列都要绑定到交换机
5、生产者发送的消息,经过交换机,到达队列,实现,一个消息被多个消费者获取的目的
注意:一个消费者队列可以有多个消费者实例,只有其中一个消费者实例会消费

4.路由模式

交换机通过路由key 来将消息发送给具体某个(某几个)队列,分发给消费者。

//发送消息            交换机名       路由key          消息
channel.basicPublish(EXCHANGE_NAME,routingKey,null,msg.getBytes());

若路由key为 info  则消息只会发送 amqp.gen-Agl...

若路由key 为error 则消息会发送给 amqp.gen-Agl..  和  amqp.gen-S9b

5.8.主题模式(通配符模式)

同一个消息被多个消费者获取。一个消费者队列可以有多个消费者实例,只有其中一个消费者实例会消费到消息。

符号"#" 匹配一个或多个词,符号" * "  匹配不多不少一个词。

RabbitMQ 5种队列相关推荐

  1. RabbitMQ 七种队列模式应用场景案例分析(通俗易懂)

    点击关注公众号,Java干货及时送达 作者:我思知我在 blog.csdn.net/qq_32828253/article/details/110450249 七种模式介绍与应用场景 简单模式(Hel ...

  2. RabbitMQ七种队列模式介绍与应用场景(通俗易懂)

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

  3. rabbitmq几种工作模式_RabbitMQ六种队列模式-简单队列模式

    在官网的教程中,描述了如上六类工作队列模式: 简单队列模式:最简单的工作队列,其中一个消息生产者,一个消息消费者,一个队列.也称为点对点模式. 工作模式:一个消息生产者,一个交换器,一个消息队列,多个 ...

  4. RabbitMQ自学之路(九)——RabbitMQ实现延时队列的两种方式

    一.什么是延时队列 延时队列顾名思义,即放置在该队列里面的消息是不需要立即消费的,而是等待一段时间之后取出消费. 二.延时队列应用于什么场景 场景一:在订单系统中,一个用户下单之后通常有30分钟的时间 ...

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

    目录 1.简单队列 2.work 模式 3.发布/订阅模式 4.路由模式 5.主题模式 6.四种交换器 7.总结 上一篇博客我们介绍了RabbitMQ消息通信中的一些基本概念,这篇博客我们介绍 Rab ...

  6. SpringBoot之使用RabbitMQ实现延迟队列

    在我们的各个项目中,经常会有这样的需求. 订单模块:在订单下单后30分钟如果没有付款,就自动取消订单, 短信模块:在下单成功后60s给用户发送短信通知 支付模块:在微信/支付宝支付成功后,1分钟后去调 ...

  7. RabbitMQ之镜像队列

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  8. 理论修炼之RabbitMQ,消息队列服务的稳健者

    ????欢迎点赞 :???? 收藏 ⭐留言 ???? 如有错误敬请指正,赐人玫瑰,手留余香! ????本文作者:由webmote 原创,首发于 [掘金] ????作者格言:生活在于折腾,当你不折腾生活 ...

  9. rabbitmq 消费端代码获取队列名称_C#调用RabbitMQ实现消息队列的示例代码

    前言 我在刚接触使用中间件的时候,发现,中间件的使用并不是最难的,反而是中间件的下载,安装,配置才是最难的. 所以,这篇文章我们从头开始学习RabbitMq,真正的从头开始. 关于消息队列 其实消息队 ...

最新文章

  1. 使用Electron制作一个快速搜索应用(入门向)
  2. STL中的set容器的一点总结
  3. 智能运维监管系统终端_什么系统能实现机房智能运维?
  4. teamviwer安装提示 Verification of your Teamviewer version failed!.
  5. ES6 ArrayBuffer 概述
  6. python3.6.1安装,linux下安装Python3.6.1
  7. wordpress函数技巧
  8. 使用批处理设置、启动和停止服务
  9. 腾讯教育 App Flutter 跨端点播组件实践
  10. wordpress好用的插件-wordpress插件自动采集伪原创发布插件免费
  11. word文档插入尾注,并且设置尾注在参考文献这一章
  12. 2016年,你要学习这些移动开发技术
  13. jetson agx xavier 系统源码编译及固件烧写
  14. 0x00007FFE81272FE1 (ucrtbased.dll) (Project1.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x0000000000000000 时发
  15. JavaScript下雨效果
  16. 入门理解计算机视觉、图形学、图像处理
  17. vue中css写法_vue css 写法大全
  18. js获取url后的参数
  19. BIM与超级计算机,科学家用超级计算机和3D打印模拟人体血管网
  20. 传感器技术—霍尔传感器(学习笔记九)

热门文章

  1. github可以刷星吗_GitHub 有偿刷星,上千 Star 数背后的猫腻
  2. php视频和声音不同步,视频声音画面不同步怎么办
  3. 北京交通大学计算机学院考研,2019北京交通大学计算机考研考生科目、参考书目、招生人数...
  4. 【SqlServer】T-SQL的简介及基本用法
  5. 【L2-022 重排链表】天梯赛L2系列详细解答
  6. 【Java】Java根据出生日期计算还有几天的生日
  7. 设置HP 1022n打印机为网络打印机的经验教训
  8. OSI参考模型与TCP/IP协议
  9. 山东省科学技术进步奖项项目申报条件和流程
  10. 帝国防线超能辅助加速升级 快速获取勇士和护卫脚本工具