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 ...
随机推荐
- PHP实现简单的评论与回复功能还有删除信息
我们首先先看一下功能 上面黑色的是评论的下面红色的字体是回复的 再来看看怎么实现的 1.发布评论 <form action="pinglunchili.php" method ...
- 使用python操作mysql数据库
这是我之前使用mysql时用到的一些库及开发的工具,这里记录下,也方便我查阅. python版本: 2.7.13 mysql版本: 5.5.36 几个python库 1.mysql-connector ...
- c# ProxyServer 代理服务器 不是很稳定
/**C# Programming Tips & Techniquesby Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill ...
- 【前端】一步一步使用webpack+react+scss脚手架重构项目
前言 前几天做了一个项目:[node]记录项目的开始与完成——pipeline_kafka流式数据库管理项目:因为开发时间紧迫,浅略的使用了一下react,感觉这个ui库非常的符合我的口味,现在趁着有 ...
- 转载文章之提供给开发者 10 款最好的 Python IDE
Python 非常易学,强大的编程语言.Python 包括高效高级的数据结构,提供简单且高效的面向对象编程. Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE).这 ...
- Vijos 1004 伊甸园日历游戏 博弈
描述 Adam和Eve玩一个游戏,他们先从1900.1.1到2001.11.4这个日期之间随意抽取一个日期出来.然后他们轮流对这个日期进行操作: 1 : 把日期的天数加1,例如1900.1.1变到19 ...
- Octopus——excel导入导出工具
Octopus Octopus是一个简易的Excel导入导出工具.目前主要就两个功能: 导入:将excel中一行数据转换为指定的java对象,并通过指定的正则表达式检查合法性. 导出:按照给定的xml ...
- doPost或doGet调用出错(状态代码为405) : HTTP method GET is not supported by this URL
最近做servlet发现了个问题,解决办法记下来: Servlet eroor:HTTP method GET is not supported by this URL 错误提示: type: St ...
- Java之分支和循环
Java中的分支语句: if语句: if语句的四种写法: (1) if(表达式_布尔值) { ... } (2) if(表达式_布尔值) { ... } else { ... } (3) if(表达式 ...
- gulp-rev-append静态资源添加版本号后缀,清理缓存
大多用的是gulp-rev.gulp-rev-collerctor两个插件,但过程有点麻烦,使用gulp-rev-append插件轻松搞定 github: https://github.com/b ...