RabbitMQ支持各种操作系统,包括Unix\Linux及其各种发行和变种版本、Windows、MAC等。

    首先需要下载安装包,可以是二进制,也可以是源码安装,各种包集合下载地址。

    由于支持的操作系统众多,那么版本也就众多,本文以Centos为例:

一、Erlang安装

    RabbitMQ基于Erlang,所以必须先安装Erlang,具体如何安装参考。

二、RabbitMQ二进制安装

    #rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc

    #yum install rabbitmq-server-3.0.1-1.noarch.rpm

三、RabbitMQ源码安装

    #wget  

    #tar rabbitmq-server-generic-unix-2.8.2.tar.gz

    #cd /rabbitmq-server-generic-unix-2.8.2

    修改Makeifle ,添加以下参数,指定安装目录:

    SBIN_DIR = /usr/sbin

    MAN_DIR = /usr/share/man

    TARGET= /usr/lib/rabbitmq

    #make && make install

    注意:安装脚本最后会从一个网站上拉man手册,有时连不上这个网站,安装脚本就会停住,这时可以Ctrl-c结束安装进程,这时其实已经安装完成只差man手册。

    接下来验证下我们的成果吧。

四、运行RabbitMQ Server

    按照上面步骤安装的RabbitMQ Server都是默认配置,如果想定制这些配置信息请听下回分解。缺省情况下RabbitMQ Server不会以daemon启动,如果需要这个效果可以在root下执行下面命令:

    #chkconfig rabbitmq-server on

    如此这般后就可以这样启动和停止了RabbitMQ Server了:

    #/sbin/service rabbitmq-server start

    #/sbin/service rabbitmq-server stop

五、管理RabbitMQ Server

    RabbitMQ提供了rabbitmqctl用于管理RabbitMQ Server,后文书会详细讲解,暂且不表。

六、日志

    默认在这个/var/log/rabbitmq位置下会有RabbitMQ Server的日志,在这儿能看到一些你想要的蛛丝马迹。

    这个目录(可以通过RABBITMQ_LOG_BASE配置)下有两类日志:分别不是流水日志和Additional日志:

    流水日志为:RABBITMQ_NODENAME.log 

    Additional日志为:RABBITMQ_NODENAME-sasl.log

对于RabbitMQ如果是简单的应用case,则用缺省配置即可,如果是复杂应用,则需要定制服务器配置。下面就开始详细配置之旅吧。

    RabbitMQ通常有以下2种方式来定制Server:

一、环境变量      环境变量初始值通过文件rabbitmq-env.conf来配置,rabbitmq-env.conf默认在/etc/rabbitmq,

且位置不可更改。

  rabbitmq-env.conf中的每项都以 RABBITMQ_为前缀,常用参数如下:

  RABBITMQ_NODE_IP_ADDRESS= //IP地址,空串bind所有地址,指定地址bind指定网络接口

  RABBITMQ_NODE_PORT= //TCP端口号,默认是5672

  RABBITMQ_NODENAME= //节点名称。默认是rabbit

  RABBITMQ_CONFIG_FILE= //配置文件路径

  RABBITMQ_MNESIA_BASE= //mnesia所在路径

  RABBITMQ_LOG_BASE= //日志所在路径

  RABBITMQ_PLUGINS_DIR= //插件所在路径

  

  rabbitmq-env.conf使用原理的更详细信息请看,更多环境变量参数请看。

二、配置文件

  配置文件即上节rabbitmq-env.conf中通过RABBITMQ_CONFIG_FILE指定的文件加后缀.config。

  一般取名为rabbitmq.config该文件是标准的Erlang配置文件,详细信息请参看。

  rabbitmq.config文件中每个参数为一个Erlang tuple,结构为{KeyValue, Keyatom类型, Value为一个term,其中几个关键参数为:

  tcp_listerners设置rabbimq的监听端口,默认为[5672]
  disk_free_limit 磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为{mem_relative, 1.0},即与内存相关联11,也可定制为多少byte.
  vm_memory_high_watermark,设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40%
  hipe_compile 将部分rabbimq代码用High Performance Erlang compiler编译,可提升性能,该参数是实验性,若出现erlang vm segfaults,应关掉。

  force_fine_statistics,该参数属于rabbimq_management,若为true则进行精细化的统计,但会影响性能。

  frame_max:包大小,若包小则低延迟,若包则高吞吐,默认是131072=128K。

  heartbeat:客户端与服务端心跳间隔,设置为0则关闭心跳,默认是600秒。

  rabbitmq-env.conf和rabbitmq.config默认是不存在的。

  rabbitmq-env.conf需要在缺省位置手动创建一个。

  rabbitmq.config需要在RABBITMQ_CONFIG_FILE指定位置手动创建一个。