了解何时使用RabbitMQ
人们如何做出决定?在日常生活中,情绪往往是第一动力。但当人们需要承担长期后果时,不可能纯靠冲动行事。聪明者只会在心里有数后才会靠直觉做出决定。
如今市场上有数十种发送消息的技术,无数ESB和近100家iPaaS供应商。当然,如何挑选就成为了一个问题。需要批发一堆技术吗?还是对症下药?那么,正确的工具应该是什么?
这篇文章正是想给那些“无头苍蝇”们一些简单直接的建议,就从如今最时尚最受欢迎的RabbitMQ开始吧!两者都有自己的起源故事,设计意图,闪光点,集成功能和开发人员的切身体验。起源揭示了本软件的整体设计意图o。重要的是,本文中的目的是比较两者围绕消息中介的重叠用例,而不是Kafka擅长的“事件存储/事件源”用例。
起源
RabbitMQ是一个“传统”消息中介,可以实现各种消息传递协议。它是首批实现大量功能,客户端库,开发工具和质量文档的开源消息中介之一。RabbitMQ最初是为实现开放式线路协议AMQP而开发的。虽然Java具有像JMS这样的消息传递标准,但它对于需要分布式消息传递的非Java应用程序没有帮助,因为它严重限制了集成场景,微服务。随着AMQP的出现,跨语言的灵活性成为开源消息中介的真实存在。
建筑与设计
RabbitMQ作为通用的消息中介,采用点对点的方式,请求/回复各类通信样式。它使用智能中介/ “沉默的消费者”模型,专注于向消费者提供一致的消息传递,消费者的消费速度与中介跟踪消费者状态的速度大致相似。RabbitMQ是成熟的,在得到正确配置时表现良好,得到很多支持(客户端库Java,.NET,node.js,Ruby,PHP和更多语言),并且有许多可用的插件可以将它扩展到更多的用例和集成场景。
RabbitMQ中的通信可以根据需要同步或异步。发布者向中间站发送消息,消费者从队列中检索消息。通过交换将生产者与队列分离,可确保生产者不会受到硬编码决策的影响。RabbitMQ还提供了许多分布式部署方案(并且确切要求所有节点都能够解析主机名)。可以将多节点群集设置为群集联合,并且不依赖于外部服务(但某些群集形成插件可以使用AWS API,DNS,Consul等)。
要求和用例
RabbitMQ是一种通用的消息传递解决方案,通常用于允许Web服务器快速响应请求,而不是在用户等待结果时强制执行复杂的过程。它还可以将消息分发给多个接收者以供消费,或者在高负载(20k + / sec)下平衡负载。当您的需求超出吞吐量时,RabbitMQ可提供许多功能:可靠的交付,路由,联合,HA,安全性,管理工具和其他功能。让我们来看看RabbitMQ的最佳场景,例如:
- 您的应用程序需要使用现有协议的任意组合,如AMQP 0-9-1,STOMP,MQTT,AMQP 1.0。
- 您需要基于每个消息(死信队列等)进行更精细的一致性控制/保证。但是,Kafka最近添加了更优的支持。
- 您的应用程序需要点对点,请求/回复、发布/订阅,具有消息传递的多样性
- 至消费者复杂的路由,使用强大的路由逻辑集成多个服务/应用程序
- 在其他软件的帮助下,RabbitMQ还可以有效地解决上面几个Kafka强大的用例。当应用程序需要访问流历史时,RabbitMQ通常与Apache Cassandra一起使用,对于需要“无限”队列的应用程序,RabbitMQ通常与LevelDB插件一起使用,但这两种功能都不附带RabbitMQ本身。
开发经验
RabbitMQ正式支持Java,Spring,.NET,PHP,Python,Ruby,JavaScript,Go,Elixir,Objective-C,Swift - 通过社区插件与许多其他客户端的devtools一起支持。RabbitMQ客户端库已经成熟并且文档齐全。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
应届程序员进阿里1个月还在打杂看代码,难道让你写一堆BUG上线?
有位应届生开发进阿里一个月了,每天打杂看代码,始终不让动手写。还发帖问网友,这样情况要持续多久?感觉一个月都没多大成长。一般阿里多久才会把应届生看做一个正常的开发? 不过有网友就怼到:看代码都没成长? 下个月你可以走了。之后楼主回复说自己代码写的不好。 同时也有网友鼓励楼主:心态要好,开始谁都是打杂的。后面还有一位阿里的蚂蚁金服程序员也表示自己也是一样,疯狂阅读一堆业务代码,熟悉了一堆业务规则,技术成功的退步了。 当然有人鼓励也会有人嘲讽,有位网友就表示,现在让你写你也做不了。更有人直接说道:写一堆BUG,然后上线各种坑?就像网友说的,不同公司不一样,同公司不同项目组也不一样,这个问题谁都没办法准确给你答案。应届生通常是先给小事情,做好了再继续给大的,基本上每个应届生都会碰到你这样的,重要是沉下心来,调整心态。 有趣的是,有个网友表示,自己的朋友也是阿里应届,一进去得立马上手…加班不停,还说他比较希望像楼主这样… 看楼主这样说,有位阿里程序员坐不住了,他说道: 看代码是让你熟悉业务,熟悉系统,这时候一定要有产出,比如业务流程图,数据模型,画Uml等,并主动反馈给主管进行沟通,讲一下自己...
-
下一篇
短视频SDK架构设计,短视频APP开发目标首选
短视频 SDK 实践中主要做的一些事情,这其中最重要的就是短视频 SDK 的架构设计,包括架构设计理念、架构图、整体数据流程、模块架构设计等。今天小编就简单介绍一下短视频APP开发中,选择什么样的厂家,厂家SDK 架构设计理念。 第一点说到 SDK 的设计理念必定要提到命名规范,就跟腾讯的企业理念一样,他们的命名规范是统一、简单并且精炼的,比如他们将对外的核心类统一以 PLShortVideo 为前缀,在录制、编辑以及剪辑等模块的命名;参数配置类则均以 PLxxxSetting 为标准进行命名;接口回调类则均以 PLxxxListener 为标准命名。第二点他们遵循的是高模块化、模块可插拔的一个理念;高模块化必须要保证每个类每个方法都「名副其实」并「各司其职」,这样才能编写更清晰的逻辑;高模块化同时可以促进高复用,减少重复代码;在 SDK 内的转码核心类,因为编辑、剪辑在最后保存的时候都需要一个解码并重新编码的过程,在这里,转码核心类可以达到一个高复用。短视频 SDK 的包体划分,他们的可以清晰地看到每个包体的功能划分,不同的功能放在了不同的包体当中。他们并没有使用 ffmpeg 的软...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker使用Oracle官方镜像安装(12C,18C,19C)