RabbitMQ的六种工作模式

1.work queues 工作队列

应用场景:对于任务过重或者任务较多情况使用工作队列可以提高任务处理速度

工作模式:一个生产者,多个消费者,生产者发送多个消息

处理方式:一条消息只会被一个消费者接收,采用轮询的方式将消息平均发送给消费者,消费者在处理晚某一条消息后,才会收到一条消息

2.Publish/Subscribe 发布、订阅

应用场景:用户通知,消息推送,短信,邮件等

工作模式:每个消费者监听自己的想监听的队列,生产者将消息发送给broker,由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收消息。

[思考]

  • publish/subscribe与work queues有什么区别。区别:

    1)work queues不用定义交换机,而publish/subscribe需要定义交换机。

    2)publish/subscribe的生产方是面向交换机发送消息,work queues的生产方是面向队列发送消息(底层使用默认交换机)。

    3)publish/subscribe需要设置队列和交换机的绑定,work queues不需要设置,实质上work queues会将队列绑定到默认的交换机。

    相同点: 所以两者实现的发布/订阅的效果是一样的,多个消费端监听同一个队列不会重复消费消息。

  • 实质工作用什么 publish/subscribe还是work queues。

    建议使用 publish/subscribe,发布订阅模式比工作队列模式更强大,并且发布订阅模式可以指定自己专用的交换机。

3.Routing 路由模式

应用场景

比如一个记录日志的功能,针对error型的日志记录数据库,日常info和warning进行写日志文件,那这样我们就可以使用路由模式,创建exchange【交换机】,类型为direct:这个类型表示需要明确指定路由key,为每个对应的日志类型创建队列。绑定交换机,再创建2个消费者,1个绑定error队列,1个绑定info,warning队列。进行业务处理

工作模式

1.每个消费者监听自己的队列,并设置routingkey。

2.生产者将消息发给交换机,由交换机根据routingkey来转发消息到指定队列

4.Topics主题模式

应用场景:

根据用户的通知设置去通知用户,设置接收Email的用户只接收Email,设置接收sms的用户只接收sms,设置两种通知类型都接收的则两种通知都有效。

通配符的使用:

  • #是一个可以匹配一个或者多个单词,*是只匹配一个单词

工作模式

  • 每个消费者监听自己的队列,并且设置带统配符的routingley
  • 生产者将消息发给broker,由交换机根据routingkey来转发消息到指定队列

【思考】

1、本案例的需求使用Routing工作模式能否实现?

使用Routing模式也可以实现本案例,共设置三个 routingkey,分别是email、sms、all,email队列绑定email和all,sms队列绑定sms和all,这样就可以实现上边案例的功能,实现过程比topics复杂。

Topic模式更多加强大,它可以实现Routing、publish/subscirbe模式的功能。

5.Header模式

header模式与routing不同的地方在于,header模式取消routingkey,使用header中的key/value(键值对)匹配队列

应用场景:

根据用户的通知设置去通知用户,设置接收Email的用户只接收Email,设置接收sms的用户只接收sms,设置两种通知类型都接收的则两种通知都有效。

6.RPC

RPC即客户端远程调用服务端的方法 ,使用MQ可以实现RPC的异步调用,基于Direct交换机实现,流程如下:

1、客户端即是生产者就是消费者,向RPC请求队列发送RPC调用消息,同时监听RPC响应队列;
2、服务端监听RPC请求队列的消息,收到消息后执行服务端的方法,得到方法返回的结果;
3、服务端将RPC方法 的结果发送到RPC响应队列;
4、客户端(RPC调用方)监听RPC响应队列,接收到RPC调用结果。

总结一下几个模式

1.简单模式,用的默认交换机,1个生产者,1个消费者,一个消息只能被一个消费者消息

2.工作模,多个消费者监听同一个队列,如果任务数据比较多,可以多几个消费者,可以加快消费的速度

3.订阅发布模式,引入了交换机的类型fanout,广播模式 ,每个消费者单独监听自己的对列都可以取消费自己队列的消息。

4.routing,是direct的的交换机类型,指定路由

5.topic,是topic的交换机类型,比路由多了通配符的更加的灵活

RabbitMQ的六种工作模式相关推荐

  1. 消息中间件的应用场景与 RabbitMQ的六种工作模式介绍

    消息中间件的应用场景与 RabbitMQ的六种工作模式介绍 消息中间件应用场景 异步处理 应用解耦 流量削峰 RabbitMQ的六种工作模式 简单模式 工作模式 发布订阅模式 路由模式 主题模式 PR ...

  2. rabbitmq几种工作模式_RabbitMQ的六种工作模式总结

    精品推荐 国内稀缺优秀Java全栈课程-Vue+SpringBoot通讯录系统全新发布! 作者:侧身左睡 https://www.cnblogs.com/xyfer1018/p/11581511.ht ...

  3. rabbitmq多个消费者监听一个队列_RabbitMQ的六种工作模式

    一.基于erlang语言:是一种支持高并发的语言 RabbitMQ的六种工作模式: 1.1 simple简单模式 消息产生着§将消息放入队列 消息的消费者(consumer) 监听(while) 消息 ...

  4. 聊一聊RabbitMQ六种工作模式与应用场景

    简介 今天我们来聊一聊 RabbitMQ 的工作模式与其对于的应用场景有哪些. 你可能会疑惑,作为 MQ 不就是生产者将消息发送到 MQ ,再讲消息发送到消费者哪里,任务不就完成了吗? 其实,不是这样 ...

  5. rabbitmq官方的六种工作模式

    1.RabbitMq 1.1介绍 RabbitMQ是一个消息代理:它接受并转发消息.你可以把它当成一个邮局:当你想邮寄信件的时候,你会把信件放在投递箱中,并确信邮递员最终会将信件送到收件人的手里.在这 ...

  6. RabbitMQ五种工作模式

    RabbitMQ五种工作模式 1.简单队列 一个生产者对应一个消费者!! 2.work 模式 一个生产者对应多个消费者,但是一条消息只能有一个消费者获得消息!!! 轮询分发就是将消息队列中的消息,依次 ...

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

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

  8. RabbitMQ六种工作模式:simple work publish routing topic rpc

    simple简单模式 消息产生着§将消息放入队列 消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者 ...

  9. RabbitMQ简介和六种工作模式详解

    一.RabbitMQ简介 是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang(高并发语言)语言来编写的,并且RabbitMQ是基于AMQ ...

最新文章

  1. 认清自己,愉快度过每一天
  2. P2P中DHT网络原理
  3. 1.arm的linux系统搭建
  4. 【笔记】虚拟机用Xshell登陆报错“ssh服务器拒绝了密码”解决方法
  5. android的数据存储方式有哪几种方式,Android存储数据的5种方式
  6. Docker volume使用
  7. php 怎么配置邮件,PHP发邮件的配置_PHP教程
  8. 深入学习MongoDB
  9. 第二轮 冲次会议第一次
  10. js 获取子节点个数
  11. 大K提醒各位常备DOS杀毒盘
  12. MyBatis分页插件PageHelper
  13. 基于sklearn框架实现线性回归,多项式回归和支持向量机的项目实战
  14. 实用的网站、工具(科研学术、wps、作图、教程和文档、在线开发工具、在线编程学习、文档笔记工具、办公工具、写作、设计制作类、素材库)
  15. flash中zip/unip的实际意图
  16. 必先利其器之 IDEA 磨刀好杀猪
  17. java数学运算(Math类)
  18. succi - 接小球游戏
  19. MVC5-Scaffolder
  20. 数据库(二)—— 关系模型概述

热门文章

  1. C语言:动态内存管理
  2. 中国工商银行真实笔试经验分享
  3. 仿锤子科技移动端webApp
  4. 忠旺铝业 VS 魏桥创业:同为铝王,命运为何如此不同?
  5. Python+Vue计算机毕业设计山东魏桥创业集团有限公司外贸出口管理信息系统fyndb(源码+程序+LW+部署)
  6. 移动web开发,ios下移除input默认样式
  7. echarts官方地图案例数据整理
  8. HDU2255 奔小康赚大钱
  9. new在c 语言中的用法,详解C++中new运算符和delete运算符的使用
  10. 使用小乌龟TortoiseGit快速解决代码冲突的三种解决方法: