RabbitMQ教程(一)——安装配置

一、前言

  由于最近在学习RabbitMQ消息队列,但是鉴于网上对于官网介绍的教程比较少或者由于时间长长期未更新,因此决定将对官网的RabbitMQ入门教程进行翻译加总结,当然对于有一定英语阅读能力的同学还是建议直接阅读官网文档!

  注:本博客写于2017年8月RabbitMQ官网最新的关于RabbitMQ的介绍,本系列教程均为Java版

  官网地址:https://www.rabbitmq.com

  教程地址:https://www.rabbitmq.com/getstarted.html

二、安装RabbitMQ

  操作系统:Ubuntu16.04

1. 安装RabbitMQ

  RabbitMQ需要使用Erlang/OTP来运行,因为RabbitMQ是由Erlang编写的,所以运行时需要Erlang依赖。Erlang/OTP的版本也可能是过时的,考虑安装一个更加新的版本,例如19.3,你可以根据你的Ubuntu版本号确定对应的Erlang是否满足要求

Erlang 发行号 提供的版本库号
20.x 不支持,并将导致从较早的Erlang / OTP版本升级到数据丢失,避免除非本文档更新,否则建议。
19.x Erlang Solutions, Debian Stretch, Debian Jessie backports, Ubuntu Zesty (17.04)
18.x Erlang Solutions, Ubuntu Yakkety (16.10), Ubuntu Xenial (16.04)
17.x Erlang Solutions, Debian Jessie, Debian Wheezy backports

  在Ubuntu中,你只需要使用使用如下命令即可直接安装RabbitMQ以及其所需的Erlang依赖

sudo apt-get update
sudo apt-get install rabbitmq-server

  以下图为证,Erlang等一系列依赖项将被安装:

  至此,RabbitMQ已被安装,非常简单。

2. 运行RabbitMQ Server

2.1 配置RabbitMQ的环境变量(系统参数)

下载完成之后,配置文件rabbitmq-env.conf默认在/etc/rabbitmq/文件夹下,通过cat显示文件内容可以看到

cat /etc/rabbitmq/rabbitmq-env.conf

参数:

  NODENAME,默认值为rabbit。如果你想在你的一台机器上运行多个rabbitmq时,通过设置rabbitmq的NODENAME参数作为ID加以区分,每台机器上的NODENAME应该不相同。

  NODE_IP_ADDRESS,默认值为127.0.0.1。默认绑定到所有可以检索到的IPV4以及IPV6的地址,如果需要绑定到一个特定的网络端口或者地址簇时进行设置;

  NODE_PORT,默认值为5672。默认端口号为5672,如果发生端口冲突,直接修改端口号即可。

2.2 启动Server

  当RabbitMQ包被安装后,Server将默认作为守护进程开启。

  如果是管理员(Root),则在Ubuntu系统中直接使用如下命令开启或停止RabbitMQ Server

开启:service rabbitmq-server start
关闭:service rabbitmq-server stop

  此外,官网给出了如下的提醒:RabbitMQ Server安装运行后是作为系统用户rabbitmq的,如果你改变了节点数据库(node database)或日志文件的位置,你必须确保这些文件被用户所拥有并且需要更新环境变量。

3. 端口权限

  SELinux(安装在内核的安全模块,默认包含在:Fedora、Red Hat Enterprise、Debian 以及CentOS)并且类似的机制可能会组织RabbitMQ绑定到特定的端口。当出现这样的问题时,RabbitMQ可能会启动失败。另外防火墙会组织RabbitMQ节点与CLI(命令终端)进行交互,需要确保以下端口的开放:4396,5682,5671,25672,15672,61613,61614,1883,8883,15674,15675。

4.  用户权限

  RabbitMQ默认创建一个用户名为guest,密码为guest的用户,未配置的客户端通常需要使用这个guest账号作为登录凭据。当然guest账号只能在连接本地localhost时使用,所以,如果你想从其他机器中远程连接,你就需要进行一定的配置。具体配置创建用户,删除guest账户,允许guest用户获得远程权限,可以参考官网文档(暂未写博,敬请期待):

  用户权限配置:https://www.rabbitmq.com/networking.html

5. 控制Linux上的系统限制

  运行生产工作负载的RabbitMQ安装可能需要系统限制和内核参数调整才能处理大量的并发连接和队列。需要调整的主要设置是打开文件的最大数量,正如我们所知的:ulimit -n命令。在许多操作系统上的默认值对于消息队列来说太低了(例如在一些Linux的发行版本上为1024),对于在生产环境中的rabbitmq用户,我们推荐设置值最少为65536的文件描述符。

  其中主要有两个限制:

  第一个是操作系统内核允许的最大打开文件数:fs.file-max

  另一个是每个用户的打开文件限制:ulimit -n

  不难发现,前者应该大于后者。

A. 拥有systemd的Linux(最近的Linux发行版)

  在这些可以使用systemd的发行版中,操作系统的文件打开上限可以被一个配置文件进行设置

  文件位置:/etc/systemd/system/rabbitmq-server.service.d/limits.conf,直接进行编辑设置,例如:

  设置LimitNOFILE=300000

B. 没有systemd的Linux(老版的Linux发行版)

  在这些不适用systemd的发行版中最直接的调整每个用户对于RabbitMQ的限制的方式是:

  编辑/etc/default/rabbitmq-server文件的ulimit -n,删除注释并且修改值:

  或者编辑rabbitmq-env.conf中加入:

ulimit -S -n 

  将每个用户的最大打开文件描述符数设置为4096,以在RabbitMQ服务并没有启动的时候每次都能被调用。

  这个软件限制不能超过硬件限制(在许多发行版中默认为4096)。 硬限制可以通过/etc/security/limits.conf来增加。 这也需要启用pam_limits.so模块并重新登录或重新启动。 请注意,运行OS进程不能更改设置。

6. 验证限制

  在RabbitMQ安装后,会提供RabbitMQ management UI在总览标签视图上显示可获得的文件描述符的数量。

  其中开启RabbitMQ Management插件开启管理的Web界面,开启命令为:

rabbitmq-plugins enable rabbitmq_management

  注意,就像上文提到过的,RabbitMQ默认的guest用户只能在localhost本地登录(即在虚拟机中可以打开浏览器访问:localhost:15672,账号名:guest,密码:guest)

  具体的RabbitMQ管理配置文档、添加Adminastrator用户以及开启远程连接(暂未写博,敬请期待):https://www.rabbitmq.com/management.html

  可以看到当前打开的文件描述符最大限制为65536,当前已经打开了21个:

  或者通过运行命令行,查找出文件描述符的总数等更加详细的参数:

rabbitmqctl status

  详细参数都打印出来,其中文件描述符(file_discriptors)参数如下:

  对于展示运行进程的限制,可以在rabbitmqctl status命令运行后查看pid的值:

  然后在命令行输入cat /proc/$RABBITMQ_BEAM_PROCESS_PID/limits,其中RABBITMQ_BEAM_PROCESS_PID参数值为运行rabbitmqctl status后看到的值,本例中为:

cat /proc//limits

  显示此进程的各种详细限制如下:

7. 配置管理工具

  停止rabbitmq:

rabbitmqctl stop

  查看rabbitmq的运行状态:

rabbitmqctl status

  关于rabbitmqctl更多的官网文档(暂未写博,敬请期待):https://www.rabbitmq.com/man/rabbitmqctl.1.man.html

8. 日志

  来自服务器的输出将发送到RABBITMQ_LOG_BASE目录中的RABBITMQ_NODENAME.log文件。其他日志数据写入RABBITMQ_NODENAME-sasl.log。

  消息队列总是追加到日志文件,所以完整的日志记录将得到保留。

  可以使用logrotate程序进行所有必要的旋转和压缩,您可以更改它。默认情况下,此脚本每周在默认的/ var / log / rabbitmq目录中的文件上运行。

三、小结

  RabbitMQ是一个出色的消息队列,在解耦合、应对高并发以及高吞吐量的场景拥有广泛的应用,对于RabbitMQ的学习还将进一步深入,敬请期待!

RabbitMQ教程(一)——安装配置的更多相关文章

  1. RabbitMQ集群安装配置+HAproxy+Keepalived高可用

    RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...

  2. mysql安装简单教程(自动安装/配置安装)

    mysql安装简单教程(自动安装/配置安装) 1.1前言: 由于特殊原因,在最近2-3个月里mysql真是安装了无数遍,每次安装都要上网找教程,每个教程基本都不一样,因此还是自己写下来比较好,毕竟自己 ...

  3. RabbitMQ Cluster群集安装配置

    #RabbitMQ Cluster群集安装配置 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ########## ...

  4. Rabbitmq集群安装配置

    Rabbitmq集群安装与配置 一.rabbitmq安装环境准备 1.安装环境准备 这里,我们以两个节点为例进行安装,一个节点为内存节点,另一个节点为硬盘节点,具体可根据自己需要分配节点. 安装系统 ...

  5. mysql安装教程,mysql安装配置教程

    MySQL的安装教程 一.MYSQL的安装 首先登入官网下载mysql的安装包,官网地址:https://dev.mysql.com/downloads/mysql/ 一般下载这个就好,现在的最新版本 ...

  6. Git教程之安装配置(1)

    1.Git是什么? Git是目前世界上最先进的分布式版本控制系统. 2.SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...

  7. kubernetes rabbitmq 集群安装配置

    生成secret来保存relang-cookie: secret.yml文件: apiVersion: v1kind: Secretmetadata: name: rabbit-cookietype: ...

  8. RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例

    你是否听说过或者使用过队列? 你是否听说过或者使用过消息队列? 你是否听说过或者使用过RabbitMQ? 提到这几个词,用过的人,也许觉得很简单,没用过的人,也许觉得很复杂,至少在我没使用消息队列之前 ...

  9. RabbitMQ消息队列之一:RabbitMQ的环境安装及配置

    RabbitMQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们 ...

  10. WindowsServer2012 R2 64位中文标准版(IIS8.5)下手动搭建PHP环境详细图文教程(二)安装IIS8.5

    //来源:http://www.imaoye.com/Technology/WindowsServer2012R264IIS85.html 阿里云服务器ECS Windows Server 2012 ...

随机推荐

  1. Java添加JDBC

    添加JDBC 1.SQL Server SQL Server2005 下载 sqljdbc_4.0 https://www.microsoft.com/en-us/download/details.a ...

  2. 【原】Sql Server 2008---安装时卸载Visual Studio

    由于数据库连接不上,所以卸载数据库,然后安装的时候出问题报错,结果是因为vs, 所以就有了卸载vs这一步.某些图片借用一下. 1. 打开电脑中的控制面板--程序和功能 2.找到要卸载的软件,但是卸载过 ...

  3. ASP.NET Core Web API 最小化项目

    ASP.NET Core中默认的ASP.NET Core 模板中有Web API 模板可以创建Web API项目. 有时,只需要创建一个API,不需要关心Razor,本地化或XML序列化.通过删除无用 ...

  4. Day01_变量,数据类型_程序交互_流程控制

    python执行的两种方式: 1,交互的方式:  优点:可以及时调试程序,调试方法  缺点: 无法永久保存代码 2,保存在文件中执行  优点:可以永久保存代码,在执行的时候调用  缺点:不能即时调试代 ...

  5. 算法设计与分析 上机题Mergesort

    #include <iostream>using namespace std; #define N 100 int g_array[N];     //存放输入的数字static int ...

  6. Java String charAt()方法

    描述 此方法返回位于字符串的指定索引处的字符.该字符串的索引从零开始. 语法 此方法定义的语法如下: public char charAt(int index) 参数 这里是参数的细节: index  ...

  7. Python爬虫从入门到放弃(十一)之 Scrapy框架整体的一个了解

    这里是通过爬取伯乐在线的全部文章为例子,让自己先对scrapy进行一个整理的理解 该例子中的详细代码会放到我的github地址:https://github.com/pythonsite/spider ...

  8. 开发servlet三种方式

    第一种:实现Servlet接口 ServletDemo类 实现Servlet接口 public class ServletDemo implements Servlet { //初始化该servlet ...

  9. virtualbox 安装centos系统,设置双网卡实现虚拟机上网及主宿互访

    写在前面:前两天想玩linux,在VMware中装了centos,进入系统后发现连不上网,搜了下教程,/etc/sysconfig/network-scripts/目录下没有 ifcfg-e*的文件 ...

  10. 字符的读写函数:fgetc()和fputc()

    fgetc();    功能:    从文件中读取字符.    头文件:  #include <stdio.h>    函数原型:int fgetc(FILE *stream);    返 ...