Ezreal 书架 Ezreal 书架
Home
  • 《Go程序员面试笔试宝典》
  • 《RabbitMQ 实战指南》
  • 《深入理解kafka》
  • MySQL45讲
  • 透视HTTP协议
  • 结构化数据的分布式存储系统
  • Raft 共识算法
Home
  • 《Go程序员面试笔试宝典》
  • 《RabbitMQ 实战指南》
  • 《深入理解kafka》
  • MySQL45讲
  • 透视HTTP协议
  • 结构化数据的分布式存储系统
  • Raft 共识算法
  • RabbitMQ简介

    • 什么是消息中间件
    • 消息中间件的作用
    • RabbitMQ 的起源
    • RabbitMQ 的安装及简单使用
    • 小结
  • RabbitMQ 入门

  • 客户端开发向导

  • RabbitMQ 进阶

  • RabbitMQ 管理

  • RabbitMQ实战指南
  • RabbitMQ简介
ezreal_rao
2023-03-21

RabbitMQ 的起源

RabbitMQ 是采用 Erlang 语言实现 AMQP (Advanced Message Queuing Protocol ,高级消息队列协议) 的消息中间件,它最初起源于金融系统,用于在分布式系统中存储转发消息。

在此之前,有一些消息中间件的商业实现,比如微软的 MSMQ (MicroSoft Message Queue)、 ffiM 的 WebSphere 等 。由于高昂的价格,一般只应用于大型组织机构,它们需要可靠性、解耦及实时消息通信的功能。由于商业壁垒,商业 MQ 供应商想要解决应用互通的问题,而不是去创建标准来实现不同的 MQ 产品间的互通,或者允许应用程序更改 MQ 平台。

为了打破这个壁垒,同时为了能够让消息在各个消息队列平台间互融互通, JMS (Java Message Service) 应运而生 。 JMS 试图通过提供公共 Java API 的方式,隐藏单独 MQ 产品供应商提供的实际接口,从而跨越了壁垒,以及解决了互通问题。从技术上讲, Java 应用程序只需针对 JMS API 编程,选择合适的 MQ 驱动即可, JMS 会打理好其他部分。 ActiveMQ 就是 JMS 的一种实现 。 不过尝试使用单独标准化接口来胶合众多不同的接口,最终会暴露出问题,使得应用程序变得更加脆弱。所以急需一种新的消息通信标准化方案。

在 2006 年 6 月,由 Cisco、 Redhat、iMatix 等联合制定了 AMQP 的公开标准,由此 AMQP 登上了历史的舞台。它是应用层协议的一个开放标准,以解决众多消息中间件的需求和拓扑结构问题。它为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。

RabbitMQ 最初版本实现了 AMQP 的一个关键特性:使用协议本身就可以对队列和交换器 (Exchange) 这样的资源进行配置。 对于商业 MQ 供应商来说,资源配置需要通过管理终端的特定工具才能完成 。 RabbitMQ 的资源配置能力使其成为构建分布式应用的最完美的通信总线,特 别有助于充分利用基于云的资源和进行快速开发。

RabbitMQ 是由 RabbitMQ Technologies Ltd 开发并且提供商业支持的 。 取 Rabbit 这样一个 名字,是因为兔子行动非常迅速且繁殖起来非常疯狂, RabbitMQ 的开创者认为以此命名这个分布式软件再合适不过了。 RabbitMQ Technologies Ltd 在 2010 年 4 月被 SpringSource (VMWare 的一个部门) 收购,在 2013 年 5 月井入 Pivotal. 其实 VMWare、 Pivotal 和 EMC 本质上是一家。 不同的是 VMWare 是独立上市子公司,而 Pivotal 是整合了 EMC 的某些资源,现在并没有上市。 至今你也可以在 RabbitMQ 的官网 l 上的 Logo 旁看到 "by Pivotal" 的宇样,如图 1-2 所示 。

logo

RabbitMQ 发展到今天,被越来越多的人认可,这和它在易用性、扩展性、可靠性和高可用性等方面的卓著表现是分不开的。 RabbitMQ 的具体特点可以概括为以下几点。

  • 可靠性 : RabbitMQ 使用一些机制来保证可靠性,如持久化、传输确认及发布确认等。
  • 灵活的路由:在消息进入队列之前,通过交换器来路由消息。对于典型的路由功能,RabbitMQ 己经提供了一些内置的交换器来实现。针对更复杂的路由功能,可以将多个交换器绑定在一起, 也可以通过插件机制来实现自己的交换器。
  • 扩展性:多个 RabbitMQ 节点可以组成一个集群,也可以根据实际业务情况动态地扩展集群中节点。
  • 高可用性:队列可以在集群中的机器上设置镜像,使得在部分节点出现问题的情况下队 列仍然可用。
  • 多种协议 : RabbitMQ 除了原生支持 AMQP 协议,还支持 STOMP、MQTT 等多种消息, 中间件协议。
  • 多语言客户端: RabbitMQ 几乎支持所有常用语言,比如 Java、 Python、 Ruby、 PHP、 C#、 JavaScript 等。
  • 管理界面: RabbitMQ 提供了一个易用的用户界面,使得用户可以监控和管理消息、集群中的节点等。
  • 插件机制: RabbitMQ 提供了许多插件,以实现从多方面进行扩展,当然也可以编写自己的插件。
#mq#rabbitmq#amq
上次更新: 5/9/2023, 10:58:32 AM
消息中间件的作用
RabbitMQ 的安装及简单使用

← 消息中间件的作用 RabbitMQ 的安装及简单使用→

最近更新
01
为什么我的MySQL会抖一下
07-15
02
HTTP 性能优化面面观
07-12
03
WebSocket:沙盒里的 TCP
07-12
更多文章>
Theme by Vdoing | Copyright © 2022-2024 Ezreal Rao | CC BY-NC-SA 4.0
豫ICP备2023001810号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式