如何安装和管理RabbitMQ

简介: 如何安装和管理RabbitMQ

简介


将事情推迟一段时间而不是立即去做,可能被认为是懒惰的。事实上,大多数情况下可能确实如此。然而,有时候这样做绝对是正确的。偶尔,需要将耗时的工作推迟一段时间;它需要被排队以便将来执行,以便处理更重要的事情。为了实现这一点,你需要一个代理:一个接受来自各种发送方(例如 Web 应用程序)的消息(例如作业、任务),将它们排队,并将它们分发给相关方(即工作者)以异步和按需地利用它们。

在这篇 DigitalOcean 文章中,我们旨在向您介绍**RabbitMQ**项目:一个开源的消息代理应用程序堆栈,它实现了高级消息队列协议(AMQP),以处理我们上面解释的整个场景。

消息传递、消息代理和队列


消息传递是一种在进程、应用程序和服务器(虚拟和物理)之间交换特定数据的方式。这些交换的消息,有助于满足某些工程需求,可以包括从纯文本消息到二进制数据块的任何内容,以满足不同的需求。为了使其工作,需要由第三方程序(中间件)管理的接口… 欢迎消息代理

消息代理通常是应用程序堆栈,具有专门的部分来覆盖每个交换设置阶段。从接受消息到将其排队并将其传递给请求方,代理处理本来可能会使用非专用解决方案或简单的黑客(例如使用数据库、定时作业等)更加繁琐的任务。它们通过处理队列来工作,这些队列在技术上构成无限缓冲区,用于放置消息并稍后弹出和传递给自动处理或轮询。

为什么使用它们?


这些消息代理解决方案就像各种服务(例如您的 Web 应用程序)的中间人。它们可以通过将通常需要相当长时间来处理的任务委派给专门执行它们的第三方(例如工作者),从而大大减少 Web 应用程序服务器的负载和交付时间。当需要更多“有保证”的持久性来传递信息时,它们也非常方便。

何时使用它们?


总而言之,上面解释的核心功能扩展到涵盖多个领域,包括但不限于:

  • 允许 Web 服务器快速响应请求,而不是被迫在现场执行资源密集型程序
  • 将消息分发给多个接收者以供消费(例如处理)
  • 让离线方(即断开连接的用户)在以后的某个时间获取数据,而不是永久丢失
  • 为后端系统引入完全异步功能
  • 对任务进行排序和设置优先级
  • 在工作者之间平衡负载
  • 大大提高应用程序的可靠性和正常运行时间
  • 等等

RabbitMQ


RabbitMQ 是市场上较受欢迎的消息代理解决方案之一,以开源许可证(Mozilla Public License v1.1)提供,作为高级消息队列协议的实现。它使用 Erlang 语言开发,实际上相对容易使用和入门。它首次发布于 2007 年初,自那以后一直在积极开发,其最新版本为3.2.2(2013 年 12 月)。

它是如何工作的?


RabbitMQ 通过提供一个接口,将消息发送方(发布者)与接收方(消费者)通过交换(代理)连接起来,将数据分发到相关列表(消息队列)。

应用程序       交换       任务列表       工作者
   [数据] -------> [数据] ---> [D]+[D][D][D] --->  [数据]
 发布者        交换          队列         消费者

它与其他解决方案有何不同?


RabbitMQ,与其他一些解决方案不同,是一个完整的应用程序堆栈(即消息代理)。它为您提供了处理所需的所有工具,而不是像框架一样让您自己实现。由于其极其受欢迎,使用 RabbitMQ 并在线找到问题的答案非常容易。

高级消息队列协议(AMQP)简介


AMQP 是一个被广泛接受的开源标准,用于从源到目的地分发和传输消息。作为协议和标准,它为各种应用程序和消息代理中间件之间的互操作设置了一个共同的基础,而不会遇到由单独设置的设计决策引起的问题。

安装 RabbitMQ


RabbitMQ 软件包分发在 CentOS / RHEL 和 Ubuntu / Debian 系统上。然而,就像大多数应用程序一样,它们已经过时。因此,获取 RabbitMQ 的推荐方式是在线下载软件包并手动安装。

**注意:**由于各种原因,我们将在全新创建的 VPS 上执行我们的安装并执行此处列出的操作。如果您正在为客户提供服务并且可能已经修改了系统,为了不破坏任何正在运行的东西并避免遇到问题,强烈建议您在新系统上尝试以下说明。

在 CentOS 6 / RHEL 系统上安装


在安装 RabbitMQ 之前,我们需要先安装它的主要依赖项,比如 Erlang。然而,首先我们应该更新系统及其默认应用程序。

运行以下命令来更新我们的 droplet:

yum -y update

然后使用以下命令在我们的系统上安装 Erlang:

# 添加并启用相关的应用程序仓库:
# 注意:我们还启用了第三方 remi 软件包仓库。
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
# 最后,下载并安装 Erlang:
yum install -y erlang

安装完 Erlang 后,我们可以继续安装 RabbitMQ:

# 使用 wget 下载最新的 RabbitMQ 软件包:
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.2/rabbitmq-server-3.2.2-1.noarch.rpm
# 添加用于验证的必要密钥:
rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
# 使用 YUM 安装 .RPM 软件包:
yum install rabbitmq-server-3.2.2-1.noarch.rpm

在 Ubuntu 13 / Debian 7 系统上安装


由于我们希望使用更近期的版本,因此在 Ubuntu 和 Debian 上下载和安装 RabbitMQ 的过程与 CentOS 类似。

让我们从更新系统的默认应用程序工具集开始:

apt-get update 
apt-get -y upgrade

启用 RabbitMQ 应用程序仓库:

echo "deb http://www.rabbitmq.com/debian/ testing main" >> /etc/apt/sources.list

为软件包添加验证密钥:

curl http://www.rabbitmq.com/rabbitmq-signing-key-public.asc | sudo apt-key add -

使用上述新添加的内容更新源:

apt-get update

最后,下载并安装 RabbitMQ:

sudo apt-get install rabbitmq-server

为了在启动时管理最大连接数,使用 nano 打开并编辑以下配置文件:

sudo nano /etc/default/rabbitmq-server

在保存并按下 CTRL+X 然后输入 Y 退出之前,取消注释 limit 行(即删除 #)。

管理 RabbitMQ


正如我们之前提到的,RabbitMQ 非常容易上手。使用以下针对您的系统的说明,您可以快速管理其进程,并使其在系统启动时运行。

启用管理控制台


RabbitMQ 管理控制台 是可用的插件之一,它允许您通过基于 Web 的图形用户界面(GUI)监视 [RabbitMQ] 服务器进程。

使用此控制台,您可以:

  • 管理交换、队列、绑定、用户
  • 监视队列、消息速率、连接
  • 发送和接收消息
  • 监视 Erlang 进程、内存使用情况
  • 等等

要启用 RabbitMQ 管理控制台,请运行以下命令:

sudo rabbitmq-plugins enable rabbitmq_management

启用控制台后,可以使用您喜欢的 Web 浏览器访问 http://[您的 droplet 的 IP]:15672/

默认用户名和密码都设置为“guest”以进行登录。

注意:如果在运行服务后启用此控制台,您需要重新启动服务以使更改生效。请参阅下面适用于您操作系统的相关管理部分。

在 CentOS / RHEL 系统上管理


安装应用程序后,默认情况下 RabbitMQ 不会在系统启动时启动。

要使 RabbitMQ 默认作为守护程序启动,请运行以下命令:

chkconfig rabbitmq-server on

要启动、停止、重新启动和检查应用程序状态,请使用以下命令:

# 启动服务:
/sbin/service rabbitmq-server start
# 停止服务:
/sbin/service rabbitmq-server stop
# 重新启动服务:
/sbin/service rabbitmq-server restart
# 检查状态:
/sbin/service rabbitmq-server status

在 Ubuntu / Debian 系统上管理


要在 Ubuntu 和 Debian 上启动、停止、重新启动和检查应用程序状态,请使用以下命令:

# 启动服务:
service rabbitmq-server start
# 停止服务:
service rabbitmq-server stop
# 重新启动服务:
service rabbitmq-server restart
# 检查状态:
service rabbitmq-server status

就是这样!现在您在您的虚拟服务器上拥有自己的消息队列。

配置 RabbitMQ


RabbitMQ 默认情况下以其标准配置运行。一般情况下,只要一切正常运行,它就不需要太多的调整。

要了解如何根据自定义需求进行配置,请查看其配置文档。


相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
3月前
|
消息中间件 Linux API
centos7 安装rabbitmq自定义版本及配置
centos7 安装rabbitmq自定义版本及配置
|
4月前
|
消息中间件 关系型数据库 MySQL
入职必会-开发环境搭建52-RabbitMQ安装
RabbitMQ 是一款开源的消息队列软件,最初由 LShift 公司开发,后来成为 Pivotal Software(现在是 VMware 的一部分)的一部分。它是基于 AMQP(高级消息队列协议)标准的消息中间件,旨在帮助不同应用程序之间进行可靠的数据传输和通信。 RabbitMQ 提供了高度灵活的消息队列机制,可以在分布式环境中实现应用程序之间的异步通信。它支持多种消息传递模式,包括点对点、发布/订阅、请求/响应等,能够满足各种复杂的消息通信需求。
入职必会-开发环境搭建52-RabbitMQ安装
|
4月前
|
消息中间件 存储 Linux
RabbitMQ安装及配套Laravel使用
RabbitMQ安装及配套Laravel使用
96 4
|
1月前
|
消息中间件 数据安全/隐私保护 Docker
Docker安装rabbitmq
如何使用Docker安装和配置RabbitMQ服务,包括拉取RabbitMQ镜像、创建容器、配置持久化和访问管理界面的步骤。
91 0
Docker安装rabbitmq
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
2月前
|
消息中间件 Linux
centos7安装rabbitmq
centos7安装rabbitmq
|
3月前
|
消息中间件 Docker 容器
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
这篇文章提供了RabbitMQ的安装和基本使用教程,包括如何使用Docker拉取RabbitMQ镜像、创建容器、通过浏览器访问管理界面,以及如何创建交换机、队列、绑定和使用direct、fanout和topic三种类型的交换器进行消息发布和接收的测试。
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
|
2月前
|
消息中间件 Linux
linux之centos安装rabbitmq
linux之centos安装rabbitmq
|
3月前
|
存储 Ubuntu 安全
在Ubuntu 16.04上安装和保护Mosquitto MQTT消息代理的方法
在Ubuntu 16.04上安装和保护Mosquitto MQTT消息代理的方法
100 1
|
3月前
|
Linux 数据安全/隐私保护 Docker
MQTT(EMQX) - Linux CentOS Docker 安装
MQTT(EMQX) - Linux CentOS Docker 安装
290 0