RabbitMQ实战篇(一)--虚拟机上RabbitMQ的安装及使用
你急我们都知道,RabbitMQ 是目前非常热门的一款消息中间件,不管是互联网行业还是传统行业都在大量地使用。那么什么是消息?什么是消息中间件?这些专有名词都必须有了解。
一、消息中间件概述
1、消息 (Message) 是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串、JSON 等,也可以很复杂,比如内嵌对象。
2、消息中间件,全称叫消息队列中间件 (Message Queue Middleware,简称为 MQ) 是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
3、消息传递模式:一般有两种传递模式:点对点(P2P, Point-to-Point) 模式和发布/订阅 (Pub/Sub) 模式。
点对点模式是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息,队列的存在使得消息的异步传输成为可能。
发布订阅模式定义了如何向一个内容节点发布和订阅消息,这个内容节点称为主题 (topic) ,主题可以认为是消息传递的中介,消息发布者将消息发布到某个topic,而消息订阅者则从这个topic中订阅消息。主题使得消息的订阅者与消息的发布者互相保持独立,不需要进行接触即可保证消息的传递,发布/订阅模式在消息的一对多广播时采用 。
4、为什么叫RabbitMQ?
RabbitMQ 是由 RabbitMQ Technologies Ltd 开发并且提供商业支持的 。 取 Rabbit 这样一个
名字,是因为兔子行动非常迅速且繁殖起来非常疯狂, RabbitMQ 的开创者认为以此命名这个分
布式软件再合适不过了 。
二、RabbitMQ的安装及使用
RabbitMQ是使用Erlang语言编写的,因此在安装RabbitMQ之前,需要安装Erlang。Erlang官网下载地址为:http://www.erlang.org/downloads/。我下载的版本是最新版本21.2。我把下载的压缩包放在了/opt/erlang目录下。
1、解压安装包,并配置安装目录
①使用命令:tar xvf otp_src_21.2.tar.gz将下载的压缩包解压,解压后的目录为:otp_src_21.2。
②在/opt/erlang/otp_src_21.2目录下,配置Erlang的安装目录,使用命令:./configure --prefix=/opt/erlang。
执行配置命令过程中,若出现No curses library functions found,则需要安装ncurses。
使用命令执行:yum install ncurses-devel ,遇到确认提示,输入y。安装ncurses完成后,重新执行配置命令。
2、安装Erlang
①配置命令执行完成后,执行Erlang编译安装,执行make命令。
②执行完make后,执行make install。
3、修改/etc/profile文件,添加环境变量。
ERLANG_HOME=/opt/erlang
export PATH=$PATH:$ERLANG_HOME/bin
export ERLANG_HOME
4、添加完成后,让文件生效,执行source /etc/profile,并使用命令erl测试erlang是否安装成功。
三、RabbitMQ的安装
安装完Erlang后,我们安装一下RabbitMQ。在RabbitMQ的官网:http://www.rabbitmq.com/releases/rabbitmq-server/
下载3.7.10版本。
这里一定要注意与Erlang版本的对应关系,要不然会存在启动失败。我们下载的Erlang版本为21.2,因此使用的RabbitMQ版本为3.7.10。
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"},