RabbitMQ教程(一)——安装配置
RabbitMQ教程(一)——安装配置
一、前言
由于最近在学习RabbitMQ消息队列,但是鉴于网上对于官网介绍的教程比较少或者由于时间长长期未更新,因此决定将对官网的RabbitMQ入门教程进行翻译加总结,当然对于有一定英语阅读能力的同学还是建议直接阅读官网文档!
注:本博客写于2017年8月RabbitMQ官网最新的关于RabbitMQ的介绍,本系列教程均为Java版。
教程地址: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教程(一)——安装配置的更多相关文章
- RabbitMQ集群安装配置+HAproxy+Keepalived高可用
RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...
- mysql安装简单教程(自动安装/配置安装)
mysql安装简单教程(自动安装/配置安装) 1.1前言: 由于特殊原因,在最近2-3个月里mysql真是安装了无数遍,每次安装都要上网找教程,每个教程基本都不一样,因此还是自己写下来比较好,毕竟自己 ...
- RabbitMQ Cluster群集安装配置
#RabbitMQ Cluster群集安装配置 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ########## ...
- Rabbitmq集群安装配置
Rabbitmq集群安装与配置 一.rabbitmq安装环境准备 1.安装环境准备 这里,我们以两个节点为例进行安装,一个节点为内存节点,另一个节点为硬盘节点,具体可根据自己需要分配节点. 安装系统 ...
- mysql安装教程,mysql安装配置教程
MySQL的安装教程 一.MYSQL的安装 首先登入官网下载mysql的安装包,官网地址:https://dev.mysql.com/downloads/mysql/ 一般下载这个就好,现在的最新版本 ...
- Git教程之安装配置(1)
1.Git是什么? Git是目前世界上最先进的分布式版本控制系统. 2.SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- kubernetes rabbitmq 集群安装配置
生成secret来保存relang-cookie: secret.yml文件: apiVersion: v1kind: Secretmetadata: name: rabbit-cookietype: ...
- RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例
你是否听说过或者使用过队列? 你是否听说过或者使用过消息队列? 你是否听说过或者使用过RabbitMQ? 提到这几个词,用过的人,也许觉得很简单,没用过的人,也许觉得很复杂,至少在我没使用消息队列之前 ...
- RabbitMQ消息队列之一:RabbitMQ的环境安装及配置
RabbitMQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们 ...
- WindowsServer2012 R2 64位中文标准版(IIS8.5)下手动搭建PHP环境详细图文教程(二)安装IIS8.5
//来源:http://www.imaoye.com/Technology/WindowsServer2012R264IIS85.html 阿里云服务器ECS Windows Server 2012 ...
随机推荐
- python 三级菜单 while循环三次,湖北省市-县-街道的选择,3个while的循环 -day2
python编写一个三级while的循环菜单 1.定义字典,字典里面嵌套字典,内嵌字典的值为列表. 思路: 湖北省的市:字典中的定义3个字典,用于存储{序列-键:市名} shiqu_dir = {} ...
- 安装GPU版本的tensorflow填过的那些坑!---CUDA说再见!
那些坑,那些说不出的痛! --------回首安装的过程,真的是填了一个坑又出现了一坑的感觉.记录下了算是自己的笔记也能给需要的人提供一点帮助. 1 写在前面的话 其实在装GPU版本的tensorfl ...
- hdfs文件系统架构详解
hdfs文件系统架构详解 官方hdfs分布式介绍 NameNode *Namenode负责文件系统的namespace以及客户端文件访问 *NameNode负责文件元数据操作,DataNode负责文件 ...
- Spring实现IoC的多种方式
目录 一.使用XML配置的方式实现IOC 二.使用Spring注解配置IOC 三.自动装配 四.零配置实现IOC 五.示例下载 控制反转IoC(Inversion of Control),是一种设计思 ...
- mysql中exists、not exists的用法
exists 关键字是判断是否存在的,存在则返回true,不存在则返回false, not exists则是不存在时返回true,存在返回false: 1. 最常用的if not exists用法: ...
- 跨域访问之CORS
CORS:定义 2014年1月16日,W3C的Web应用工作组(Web Applications Working Group)和Web应用安全工作组(Web AppSec)联合发布了跨源资源共享(Cr ...
- asp.net修行入门讨论
突然想起来大学的一个专业课老师,教C,C#,他的教学特点就是只教简单知识,现在想想真有道理,假如上来就教我们枯燥难以理解的高深知识,我们会恐惧编程的,极大地打击学习的兴趣,所以他C语言的指针从来没教过 ...
- 一些重要 Docker 命令的简单介绍
1. 拉取 Docker 镜像 由于容器是由 Docker 镜像构建的,首先我们需要拉取一个 docker 镜像来开始.我们可以从 Docker Registry Hub 获取所需的 docker 镜 ...
- CONSOLE_SCREEN_BUFFER_INFO 结构体
CONSOLE_SCREEN_BUFFER_INFO结构体 来源:https://msdn.microsoft.com/en-us/library/ms682093(v=vs.85).aspx 作用 ...
- C#中的ToString格式大全
// C# 日期格式 DateTime dt = DateTime.Now; dt.ToString();//2005-11-5 13:21:25 dt.ToFileTime().ToString() ...