02.RabbitMQ简介

在介绍RabbitMQ之前,我们先了解一下消息队列的简史

RabbitMQ简史

02.RabbitMQ简介_第1张图片

1983年孟买26岁的工程师Vivek Ranadive设想一种软件总线,同年Teknekron诞生了。

1985年用于高盛,用于解决金融交易。于是发布订阅模式(PubSub)诞生了,同时还诞生了世界上第一个现代消息队列软件:Teknekron的The Information Bus(TIB)。

由于在那个时期金融交易行业门庭若市,因此TIB迅速传播开来。它引起了电信特别是新闻机构的注意。这些行业也特别需要将信息及时发布给千变万化的客户。这也解释了为什么在1994年大型新闻机构路透社收购了Teknekron。

与此同时,这个迅猛发展的企业软件也引起了蓝色巨人的注意。毕竟IBM最大的几位客户都来自于金融服务行业。因此,在20世纪80年代后期,IBM开始研究开发自己的消息队列软件,实际开发工作始于1990年,三年后,消息队列服务器软件IBM MQ产品系列面世。17年后,MQ系列进化成了WebSphere MQ并统治着商业消息队列平台市场。

在那段时间,TIB并没有消失在路透社腹中。相反,它仍然是企业通信市场的主要参与者。并且在1997年Teknekron以TIBCO的形式作为一家独立公司再度出现。同年,微软也在消息通信市场崭露头角:微软消息队列MSMQ诞生。

通过这一系列的革新,消息队列(MQ)软件主要留住了大型组织机构,它们需要可靠性、解耦以及实时消息通信。为什么MQ不去寻找更大的市场呢?

因为:供应商壁垒。因为,商业MQ供应商想要解决应用互通的问题,而不是去创建标准接口来允许不同的MQ产品互通。供应商壁垒维持着足够高的价格和利润率,并使得这些商业MQ软件对那些当今繁荣昌盛的初创公司和Web2.0公司来说遥不可及。

结果,中小技术公司并不是唯一一个对高价格MQ供应商感到不满的。那些造就MQ产业的金融服务公司对此也激动不起来。越是大型的金融公司越不可避免地使用来自众多供应商的MQ产品,来服务企业内部的不同应用。如果应用已经订阅了TIBCO MQ消息,若突然需要消费来自IBM MQ的消息,则实现起来会非常困难。这些产品使用不同的API、不同的协议,因而毫无疑问无法联合起来组成单一的总线。为了解决这个问题,Java Message Service(JMS)在2001年诞生了。

JMS试图通过提供公共Java API的方式,隐藏单独MQ产品供应商提供的实际接口,从而跨越了壁垒和解决了互通问题。从技术上讲,Java应用程序只需针对JMS API编程,选择合适的MQ驱动即可。JMS会打理好其他部分。

问题是你在尝试使用单独标准化接口来胶合众多不同的接口。这就像是把不同类型的衣服黏在一起:缝合处终究会裂开,真想会暴露出来。使用JMS的应用程序会变得更加脆弱。我们需要新的消息通信标准化方案。

2004年,救世主AMQP诞生了。AMQP从一开始就设计为开放标准,以解决众多的消息队列需求和拓扑结构问题。凭借开发,任何人都可以执行这一标准,针对标准编码的任何人都可以和任意AMQP供应商提供的MQ服务器进行交互。

在2006年,Rabbit Technologies诞生了:其拥有着RabbitMQ的知识产权。之所以叫Rabbit这个名字,是因为他们觉得,兔子是行动非常迅速的动物,而且繁殖起来也非常疯狂,把它用于分布式软件的命名再合适不过了。

时机总是如此的恰到好处,就在此时,AMQP规范的第一份公开草案也公之于世了。作为一份新的规范,AMQP正快速修订。这正是Erlang可以施展拳脚的地方。通过Erlang,RabbitMQ可以快速开发并跟上AMQP标准前进的节奏。核心开发人员Tony Garnock-Jones仅仅用了两个半月就将RabbitMQ 1.0版本开发完成了。2007年RabbitMQ 1.0版本正式面世。

此处简短介绍下ErLang,Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,因此非常适合于构建分布式,实时软并行计算系统。使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。进程间上下文切换对于Erlang来说仅仅 只是一两个环节,比起C程序的线程切换要高效得多得多了。

Erlang并非一门新语言,它出现于1987年,只是当时对并发、分布式需求还没有今天这么普遍,当时可谓英雄无用武之地。Erlang语言创始人Joe Armstrong当年在爱立信做电话网络方面的开发,他使用Smalltalk,可惜那个时候Smalltalk太慢,不能满足电话网络的高性能要求。但Joe实在喜欢Smalltalk,于是定购了一台Tektronix Smalltalk机器。但机器要两个月时间才到,Joe在等待中百无聊赖,就开始使用Prolog,结果等Tektronix到来的时候,他已经对Prolog更感兴趣,Joe当然不满足于精通Prolog,经过一段时间的试验,Joe给Prolog加上了并发处理和错误恢复,于是Erlang就诞生了。这也是为什么Erlang的语法和Prolog有不少相似之处。

我们再回头来看RabbitMQ。就这样一直到今天,RabbitMQ广泛使用在小到初创公司,大到互联网巨头。其中,令创始人感到惊讶的是:Rabbit的客户主要是技术公司而并非金融公司。同时,RabbitMQ也吸引着那些只有少量预算同时也要解决消息通信的个人或团队。

我们在了解了简史之后,接下来我们再来看下,如何搭建RabbitMQ环境

搭建RabbitMQ环境

下载地址:https://www.rabbitmq.com/download.html

Windows下安装

1.安装Erlang:
下载地址:https://www.erlang.org/downloads

安装:

02.RabbitMQ简介_第2张图片

02.RabbitMQ简介_第3张图片

02.RabbitMQ简介_第4张图片

02.RabbitMQ简介_第5张图片

02.RabbitMQ简介_第6张图片

安装完成。

2.安装RabbitMQ:

02.RabbitMQ简介_第7张图片

02.RabbitMQ简介_第8张图片

02.RabbitMQ简介_第9张图片

02.RabbitMQ简介_第10张图片

安装完成。

3.启动管理工具

  • 打开RabbitMQ Server的安装目录下的 rabbitmq_server-3.7.16\sbin

02.RabbitMQ简介_第11张图片

  • 在此目录下,打开cmd,并输入命令,启用Web管理界面
rabbitmq-plugins enable rabbitmq_management 

02.RabbitMQ简介_第12张图片

  此处提示Erlang没有添加环境变量,添加Erlang环境变量后重试。

02.RabbitMQ简介_第13张图片

  • 启动RabbitMQ Server
    02.RabbitMQ简介_第14张图片

  • 访问 http://127.0.0.1:15672
    02.RabbitMQ简介_第15张图片
    02.RabbitMQ简介_第16张图片

Linux(Ubuntu)下安装

1.安装Erlang

sudo apt-get install erlang

2.安装RabbitMQ

sudo apt install rabbitmq-server

3.启动、停止

sudo service rabbitmq-server start
sudo service rabbitmq-server stop
sudo service rabbitmq-server restart

4.开启Web界面管理工具

rabbitmq-plugins enable rabbitmq_management
service rabbitmq-server restart

5.解决guest用户不允许访问

cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.7/ebin
sudo vim rabbit.app

# 将 {loopback_users, [<<”guest”>>]}
# 修改为 {loopback_users, []}
# 原因:rabbitmq从3.3.0开始,使用guest/guest权限只能通过localhost访问

6.重启服务,就可以访问Web界面啦

sudo systemctl restart rabbitmq-server.service

02.RabbitMQ简介_第17张图片

Web管理界面咱们会在理解了RabbitMQ消息通信中的基本概念后,再详细介绍。

你可能感兴趣的:(RabbitMQ,RabbitMQ实战,RabbitMQ,简史,MQ)