RabbitMQ实战篇(一)--虚拟机上RabbitMQ的安装及使用

你急我们都知道,RabbitMQ 是目前非常热门的一款消息中间件,不管是互联网行业还是传统行业都在大量地使用。那么什么是消息?什么是消息中间件?这些专有名词都必须有了解。

一、消息中间件概述

1、消息 (Message) 是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串、JSON 等,也可以很复杂,比如内嵌对象。

2、消息中间件,全称叫消息队列中间件 (Message Queue Middleware,简称为 MQ) 是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。

3、消息传递模式:一般有两种传递模式:点对点(P2P, Point-to-Point) 模式和发布/订阅 (Pub/Sub) 模式。

点对点模式是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息,队列的存在使得消息的异步传输成为可能。
发布订阅模式定义了如何向一个内容节点发布和订阅消息,这个内容节点称为主题 (topic) ,主题可以认为是消息传递的中介,消息发布者将消息发布到某个topic,而消息订阅者则从这个topic中订阅消息。主题使得消息的订阅者与消息的发布者互相保持独立,不需要进行接触即可保证消息的传递,发布/订阅模式在消息的一对多广播时采用 。 

RabbitMQ实战篇(一)--虚拟机上RabbitMQ的安装及使用
 

4、为什么叫RabbitMQ?

RabbitMQ 是由 RabbitMQ Technologies Ltd 开发并且提供商业支持的 。 取 Rabbit 这样一个
名字,是因为兔子行动非常迅速且繁殖起来非常疯狂, RabbitMQ 的开创者认为以此命名这个分
布式软件再合适不过了 。

二、RabbitMQ的安装及使用
RabbitMQ是使用Erlang语言编写的,因此在安装RabbitMQ之前,需要安装Erlang。Erlang官网下载地址为:http://www.erlang.org/downloads/。我下载的版本是最新版本21.2。我把下载的压缩包放在了/opt/erlang目录下。

RabbitMQ实战篇(一)--虚拟机上RabbitMQ的安装及使用
 

1、解压安装包,并配置安装目录

①使用命令:tar xvf otp_src_21.2.tar.gz将下载的压缩包解压,解压后的目录为:otp_src_21.2。

RabbitMQ实战篇(一)--虚拟机上RabbitMQ的安装及使用
 

②在/opt/erlang/otp_src_21.2目录下,配置Erlang的安装目录,使用命令:./configure --prefix=/opt/erlang。


执行配置命令过程中,若出现No curses library functions found,则需要安装ncurses。

使用命令执行:yum install ncurses-devel ,遇到确认提示,输入y。安装ncurses完成后,重新执行配置命令。

RabbitMQ实战篇(一)--虚拟机上RabbitMQ的安装及使用
 

2、安装Erlang

①配置命令执行完成后,执行Erlang编译安装,执行make命令。

②执行完make后,执行make install。

3、修改/etc/profile文件,添加环境变量。

ERLANG_HOME=/opt/erlang
export PATH=$PATH:$ERLANG_HOME/bin
export ERLANG_HOME

RabbitMQ实战篇(一)--虚拟机上RabbitMQ的安装及使用

4、添加完成后,让文件生效,执行source /etc/profile,并使用命令erl测试erlang是否安装成功。

RabbitMQ实战篇(一)--虚拟机上RabbitMQ的安装及使用
 

三、RabbitMQ的安装

安装完Erlang后,我们安装一下RabbitMQ。在RabbitMQ的官网:http://www.rabbitmq.com/releases/rabbitmq-server/

下载3.7.10版本。

 这里一定要注意与Erlang版本的对应关系,要不然会存在启动失败。我们下载的Erlang版本为21.2,因此使用的RabbitMQ版本为3.7.10。

RabbitMQ实战篇(一)--虚拟机上RabbitMQ的安装及使用
 

1、我们将RabbitMQ安装在于Erlang相同的目录下/opt,把压缩包移到该目录下。

2、解压缩:执行命令,因为下载的是.xz文件,因此需要分两步进行:

xz -d rabbitmq-server-generic-unix-3.7.10.tar.xz

tar xvf rabbitmq-server-generic-unix-3.7.10.tar

3、为了方便记忆,将解压后的rabbitmq_server-3.7.10改名为rabbitmq,执行命令:

mv rabbitmq_server-3.6.15 rabbitmq

4、配置环境变量:在/etc/profile文件中,增加刚安装的RabbitMQ的环境变量。

export PATH=$PATH:/opt/rabbitmq/sbin
export RABBITMQ_HOME=/opt/rabbitmq

5、执行source /etc/profile,使环境变量配置生效。

四、测试

安装完成后,需要测试是否安装成功。

在/opt/rabbitmq/sbin目录下,我们使用以下命令:

rabbitmq-server -detached 

 此命令是以守护进程的方式在后台启动rabbitmq,警告可以忽略。

[root@localhost sbin]# rabbitmq-server -detached
Warning: PID file not written; -detached was passed.

  启动完成后,测试是否正常启动,使用命令:rabbitmqctl status,出现以下信息,说明启动成功!

[root@localhost sbin]# rabbitmqctl status
Status of node rabbit@localhost ...
[{pid,11229},
 {running_applications,
     [{rabbit,"RabbitMQ","3.7.10"},
      {rabbit_common,
          "Modules shared by rabbitmq-server and rabbitmq-erlang-client",
          "3.7.10"},
      {ranch,"Socket acceptor pool for TCP protocols.","1.7.1"},
      {ssl,"Erlang/OTP SSL application","9.1"},
      {public_key,"Public key infrastructure","1.6.4"},
      {asn1,"The Erlang ASN1 compiler version 5.0.8","5.0.8"},
      {mnesia,"MNESIA  CXC 138 12","4.15.5"},
      {os_mon,"CPO  CXC 138 46","2.4.7"},
      {xmerl,"XML parser","1.3.18"},
      {inets,"INETS  CXC 138 49","7.0.3"},
      {crypto,"CRYPTO","4.4"},
      {recon,"Diagnostic tools for production use","2.3.6"},
      {jsx,"a streaming, evented json parsing toolkit","2.9.0"},
      {lager,"Erlang logging framework","3.6.5"},
      {goldrush,"Erlang event stream processor","0.1.9"},
      {compiler,"ERTS  CXC 138 10","7.3"},
      {syntax_tools,"Syntax tools","2.1.6"},
      {sasl,"SASL  CXC 138 11","3.3"},