RabbitMQ介绍

RabbitMQ介绍

RabbitMQ介绍

RabbitMQ 2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的 消息中间件 之一。由以高性能、健壮以及可伸缩性出名的 Erlang 写成,因此也是继承了这些优点。并且RabbitMQ是一个是一个开源的消息代理和队列服务器。

RabbitMQ github项目地址

AMQP : Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。

主要特性

特性 作用
可靠性 提供了多种技术可以让你在 性能可靠性 之间进行 权衡。这些技术包括 持久性机制投递确认发布者证实高可用性机制
灵活的路由 消息在到达队列前是通过 交换机 进行 路由 的。RabbitMQ 为典型的路由逻辑提供了 多种内置交换机 类型。如果你有更复杂的路由需求,可以将这些交换机组合起来使用,你甚至可以实现自己的交换机类型,并且当做 RabbitMQ插件 来使用;
消息集群 在相同局域网中的多个 RabbitMQ 服务器可以 聚合 在一起,作为一个独立的逻辑代理来使用;
队列高可用 队列可以在集群中的机器上 进行镜像,以确保在硬件问题下还保证 消息安全
支持多种协议 支持 多种消息队列协议;
支持多种语言 Erlang 语言编写,支持只要是你能想到的 所有编程语言;
管理界面 RabbitMQ 有一个易用的 用户界面,使得用户可以 监控管理 消息 Broker 的许多方面;
跟踪机制 如果 消息异常RabbitMQ 提供消息跟踪机制,使用者可以找出发生了什么;
插件机制 提供了许多 插件,来从多方面进行扩展,也可以编写自己的插件。

部署环境

RabbitMQ 可以运行在 Erlang语言所支持的平台之上,包括:

  • Solaris :原先是太阳微系统公司研制的类Unix操作系统,在Sun公司被Oracle并购后被称作Oracle Solaris。
  • BSD : Berkeley Software Distribution,缩写为BSD,也被称为伯克利Unix(Berkeley Unix),是一个操作系统的名称。衍生自Unix(类Unix),1970年代由伯克利加州大学的学生比尔·乔伊(Bill Joy)开创
  • Linux : 是一种*和开放源代码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布
  • MacOSX : 是苹果公司推出的图形用户界面操作系统,为麦金塔计算机专用,自2002年起在所有的Mac 计算机预装。
  • Windows :Microsoft Windows(中文译作微软视窗[4][5])是微软公司推出的一系列操作系统

使用 RabbitMQ 需要:

  • ErLang 语言包
  • RabbitMQ 安装包

术语概要

  • Brocker:消息队列服务器实体
  • Exchange:消息交换机,指定消息按什么规则,路由到哪个队列。
  • Queue:消息队列,每个消息都会被投入到一个或者多个队列里。
  • Binding:绑定,它的作用是把exchange和queue按照路由规则binding起来
  • Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
  • Vhost:虚拟主机,一个broker里可以开设多个vhost,用作不用用户的权限分离。
  • Producer:消息生产者,就是投递消息的程序。
  • Consumer:消息消费者,就是接受消息的程序。
  • Channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务

优点

  • 由于 Erlang 语言的特性,消息队列性能较好,支持 高并发
  • 健壮、稳定、易用、跨平台、支持 多种语言、文档齐全;
  • 有消息 确认机制持久化机制,可靠性高;
  • 高度可定制的 路由
  • 管理界面 较丰富,在互联网公司也有较大规模的应用,社区活跃度高。

缺点

  • 尽管结合 Erlang 语言本身的并发优势,性能较好,但是不利于做 二次开发和维护
  • 实现了 代理架构,意味着消息在发送到客户端之前可以在 *节点 上排队。此特性使得 RabbitMQ 易于使用和部署,但是使得其 运行速度较慢,因为*节点 增加了延迟消息封装后 也比较大;
  • 需要学习 比较复杂接口和协议,学习和维护成本较高。