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 ...
随机推荐
- 可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术
可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术 前言 如果,我们只给出一个数学问题的(比如一道数独题)约束条件,是否有程序可以自动求出一个解? 可满足性模理论(SMT - Sat ...
- HTML基本结构与标签总结整理篇
HTML基本结构与标签总结整理篇 前言:这是笔者的学习总结与整理,如果有错误或疑问的地方,欢迎指正与讨论!另:此文会不定时更新~ 1.了解HTML 学习前端技术,必然涉及三个方面:html(结构).c ...
- 简析Android 兼容性测试框架CTS使用
一.什么是兼容性测试? 1)为用户提供最好的用户体验,让更多高质量的APP可以顺利的运行在此平台上 2)让程序员能为此平台写更多的高质量的应用程序 3)可以更好的利用Android应用市场 二.CTS ...
- Hibernate使用注解进行ORM映射实例
在上一篇博客中,我们通过xml配置文件进行实体类和表的映射,但是近两年来有更多的项目对一些比较稳定的实体类使用了注解进行ORM映射,这样使得编程更加简洁.简单.其实使用注解进行ORM映射和使用xml进 ...
- MyBatis源码解析【4】反射和动态代理
通过之前的介绍,我们了解了几个组件的生命周期. 它也是我们重要装备之一. 今天我们需要搞一件更加强的装备,叫做反射和动态代理. 如果没有这件装备的话,显然后面的源码boss是打不动的. 顺便说一下,下 ...
- win7-x64安装mysql5.7.11(官方zip版)
1.下载官方安装包(http://www.mysql.com/downloads/),此zip包是没有安装器的(*.msi),也没有辅助配置的自动程序. 2.解压zip包,将文件放入指定目录,如:D: ...
- PB程序源码文件结构 pbl文件 pbd文件
最近公司给了一套PB的源码,一个8.0,一个9.0,让给一个客户做软件整合,之前只听过PB看过别人写代码,为了快速上手,了解了一下PB的文件,记录如下:pbl为pb源码文件 pbd为程序编译后的文件 ...
- HTML中使用JavaScript的三种方式及优缺点
1.内部js: 在直接在页面的<script></script>标签内写js代码 优点:相对于使用行内js,内部js代码较为集中,与页面结构的实现代码耦合度较低,比较便于维 ...
- 猜年龄---while循环
#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:Andy Chen age_of_oldboy = 56 count = 0while True ...
- python爬虫从入门到放弃(一)之初识爬虫
整理这个文档的初衷是自己开始学习的时候没有找到好的教程和文本资料,自己整理一份这样的资料希望能对小伙伴有帮助 什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页 ...