当前位置: 首页 > news >正文

RabbitMQ6种常用业务场景分析

为什么80%的码农都做不了架构师?>>>   hot3.png

RabbitMQ是一个消息代理,从“生产者”接收消息并传递消息至“消费者”,期间可根据规则路由、缓存、持久化消息。“生产者”也即message发送者以下简称P,相对应的“消费者”乃message接收者以下简称C,message通过queue由P到C,queue存在于RabbitMQ,可存储尽可能多的message,多个P可向同一queue发送message,多个C可从同一个queue接收message。

场景1:单发送单接收

使用场景:简单的发送与接收,没有特别的处理。

171507104838529.png

场景2:单发送多接收

使用场景:一个发送端,多个接收端,如分布式的任务派发。为了保证消息发送的可靠性,不丢失消息,使消息持久化了。同时为了防止接收端在处理消息时down掉,只有在消息处理完成后才发送ack消息。

171513043112193.png

场景3:Publish/Subscribe

使用场景:发布、订阅模式,发送端发送广播消息,多个接收端接收。

171657207955618.png

场景4:Routing (按路线发送接收)

使用场景:发送端按routing key发送消息,不同的接收端按不同的routing key接收消息。

171709256231158.png

场景5:Topics (按topic发送接收)

使用场景:发送端不只按固定的routing key发送消息,而是按字符串“匹配”发送,接收端同样如此。

171739210926049.png

场景6.RPC

image2017-5-9%2015%3A2%3A55.png?version=1&modificationDate=1494313382000&api=v2

  1. 当客户端启动时,创建一个匿名的回调队列。
  2. 客户端为RPC请求设置2个属性:replyTo,设置回调队列名字;correlationId,标记request。
  3. 请求被发送到rpc_queue队列中。
  4. RPC服务器端监听rpc_queue队列中的请求,当请求到来时,服务器端会处理并且把带有结果的消息发送给客户端。接收的队列就是replyTo设定的回调队列。
  5. 客户端监听回调队列,当有消息时,检查correlationId属性,如果与request中匹配,那就是结果了。
    由于RPC模式不怎么常用,在这里附上测试用例代码
    服务端:
    image2017-5-9%2014%3A58%3A43.png?version=1&modificationDate=1494313129000&api=v2
    客户端:
    image2017-5-9%2014%3A59%3A55.png?version=1&modificationDate=1494313202000&api=v2

转载于:https://my.oschina.net/VILLE/blog/1057718

相关文章:

  • 面试题——敲代码推断操作系统位数
  • FetchType与FetchMode的差别
  • 4443: [Scoi2015]小秃玩矩阵|二分答案|匈牙利
  • OPENGL 红宝书实验笔记
  • 智能家居新品迭出 巨头涌入加速产业升级
  • 不谈营收的 SaaS 增长都是耍流氓!
  • “云上贵州”大赛完整诠释大数据三大业态
  • 苹果芯片订单立功 台积电股价创新高
  • 通讯应用Kik推出聊天机器人商店
  • 360回归A股再进一步:上市辅导进展工作报告出炉
  • OTT:全球联网设备超过80亿部,流量增速惊人
  • 《OpenGL ES应用开发实践指南:Android卷》—— 1.6 小结
  • 小米试水线下渠道:五家门店月营业额过千万
  • 昆明视频监控建设行之有效 明年底实现百分百覆盖
  • 《 测试反模式:有效规避常见的92种测试陷阱》—— 2.2 测试类型相关陷阱
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【5+】跨webview多页面 触发事件(二)
  • 0x05 Python数据分析,Anaconda八斩刀
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • JavaScript DOM 10 - 滚动
  • java多线程
  • k8s如何管理Pod
  • SQLServer之索引简介
  • Swift 中的尾递归和蹦床
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 检测对象或数组
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 十年未变!安全,谁之责?(下)
  • 算法-插入排序
  • 网页视频流m3u8/ts视频下载
  •  一套莫尔斯电报听写、翻译系统
  • 用jquery写贪吃蛇
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • (1)(1.9) MSP (version 4.2)
  • (LeetCode) T14. Longest Common Prefix
  • (二)WCF的Binding模型
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • ***通过什么方式***网吧
  • *1 计算机基础和操作系统基础及几大协议
  • .NET 4.0中的泛型协变和反变
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net Signalr 使用笔记
  • .net 提取注释生成API文档 帮助文档
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET开发不可不知、不可不用的辅助类(一)
  • .net项目IIS、VS 附加进程调试
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?