介绍
暂停一些事情,而不是立即做它们,可以被认为是懒惰的。事实上,大多数时候它可能是。然而,有时它是绝对正确的做法。有时,人们需要暂停一份耗时的工作;它需要排队,以便在未来执行,以便可以处理更重要的事情。要做到这一点,你需要一个经纪人**:有人从不同的发件人(即网络应用程序)接收消息(例如工作,任务),排队,并将它们分发给相关方(即工人),以便利用它们 - 所有不同步和按需求。
在这篇DigitalOcean文章中,我们旨在向您介绍 RabbitMQ 项目:一个开源消息经纪应用程序堆栈,该堆栈实施了高级消息排队协议(AMQP),以处理我们上面解释的整个场景。
消息,消息经纪人和队列
消息传输是一种在流程、应用程序和服务器(虚拟和物理)之间交换某些数据的方式,这些信息交换,有助于满足某些工程需求,可以包括从简单的文本消息到用于满足不同需求的二进制数据。
消息经纪人通常是应用程序堆栈,包含专门的零件,涵盖交易所设置的每个阶段. 从接收消息到排队,并将其交付给请求方,经纪人处理通常与非专门的解决方案或简单的 _hacks _ 如使用数据库, cron 工作等更繁琐的任务,他们只是通过处理技术上构成无限缓冲的排队,将消息放到后面,以自动或通过调查进行处理。
为什么使用它们?
这些消息传递解决方案作为各种服务的中间人(例如您的Web应用程序)。它们可以被用来大大降低Web应用程序服务器的负载和交付时间,因为任务通常需要相当长的时间来处理,可以被委托给第三方,其唯一任务是执行它们(例如工人)。
什么时候使用它们?
总之,解释的核心功能扩展到涵盖多种领域,包括但不限于:
- 允许网页服务器快速响应请求,而不是被迫在现场执行重量资源的程序
- 向多个接收者发送信息以供消费(例如处理)
- 允许离线各方(即离线用户)在以后恢复数据,而不是将其永久失去
- 将完全不同步的功能引入后端系统
- 排序和优先任务
- 平衡员工之间的负载
- 极大地提高您的应用程序的可靠性和可持续时间
- 更多
兔子
RabbitMQ是市场上最受欢迎的消息经纪解决方案之一,以开源许可证(Mozilla Public License v1.1)提供,作为高级消息排队协议的实现。使用Erlang语言开发,实际上相对易于使用并开始使用。
它是如何工作的?
RabbitMQ通过提供接口,将消息发送者(发布者)与接收者(消费者)连接,通过交换(经纪人)将数据分发到相关列表(消息队列)。
1APPLICATION EXCHANGE TASK LIST WORKER
2 [DATA] -------> [DATA] ---> [D]+[D][D][D] ---> [DATA]
3 Publisher EXCHANGE Queue Consumer
它与其他人有什么不同?
RabbitMQ,与其他一些解决方案不同,是一个全方位的应用程序堆栈(即消息经纪商)。它为您提供了您需要使用的所有工具,而不是作为一个框架,以便您实现自己的。
先进消息排队协议(AMQP)简介
AMQP是一个广泛接受的开源标准,用于从源头传输和传输消息,作为一个协议和标准,它为各种应用程序和邮件经纪商中间件建立了一个共同的基础,以便在不遇到由个人设计决策引起的问题的情况下进行互操作。
安装RabbitMQ
RabbitMQ 包分布在 CentOS / RHEL 和 Ubuntu / Debian 基于的系统中,但它们 - 与大多数应用程序一样 - 已经过时。因此,在您的系统上获取 RabbitMQ 的建议方式是在线下载并手动安装包。
注: 我们将执行我们的安装,并在新鲜和新创建的VPS上执行列出的操作,因为各种原因. 如果您正在积极为客户服务,并且可能已经修改了您的系统,以免破坏任何工作,以免出现问题,建议您在新系统上尝试以下指示。
安装在 CentOS 6 / RHEL 基于系统上
在安装 RabbitMQ 之前,我们需要了解其主要依赖性,例如 Erlang. 但是,首先我们应该更新我们的系统和默认应用程序。
运行以下操作来更新我们的滴滴:
1yum -y update
让我们使用下面的命令来在我们的系统中获得Erlang:
1# Add and enable relevant application repositories:
2# Note: We are also enabling third party remi package repositories.
3wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
4wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
5sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
6
7# Finally, download and install Erlang:
8yum install -y erlang
一旦我们有Erlang,我们可以继续安装RabbitMQ:
1# Download the latest RabbitMQ package using wget:
2wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.2/rabbitmq-server-3.2.2-1.noarch.rpm
3
4# Add the necessary keys for verification:
5rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
6
7# Install the .RPM package using YUM:
8yum install rabbitmq-server-3.2.2-1.noarch.rpm
安装在 Ubuntu 13 / Debian 7 基于系统上
在 Ubuntu 和 Debian 上下载和安装 RabbitMQ 的过程将与 CentOS 相似,因为我们希望有一个更新的版本。
让我们开始更新我们的系统的默认应用程序工具集:
1apt-get update
2apt-get -y upgrade
启用 RabbitMQ 应用库:
1echo "deb http://www.rabbitmq.com/debian/ testing main" >> /etc/apt/sources.list
添加包的验证密钥:
1curl http://www.rabbitmq.com/rabbitmq-signing-key-public.asc | sudo apt-key add -
更新來源,我們的新增從上面:
1apt-get update
最后,下载并安装RabbitMQ:
1sudo apt-get install rabbitmq-server
为了在启动时管理最大数量的连接,请使用nano
打开和编辑下面的配置文件:
1sudo nano /etc/default/rabbitmq-server
删除限制
行(即删除#
)在保存和退出之前,按 CTRL + X 然后按 Y。
管理RabbitMQ
正如我们之前提到的,RabbitMQ是非常简单的开始使用. 使用下面的指示为您的系统,您可以快速管理它的过程,并让它在系统启动(即启动)运行。
启用管理控制台
RabbitMQ管理控制台 是可用的插件之一,允许您通过基于 Web 的图形用户界面(GUI)监控 [RabbitMQ] 服务器流程。
使用此控制台,您可以:
- 管理交换、排队、连接、用户
- 监控排队、消息率、连接
- 发送和接收消息
- 监控 Erlang 流程、内存使用
- 以及更多
要启用 RabbitMQ 管理控制台,请执行以下操作:
1sudo rabbitmq-plugins enable rabbitmq_management
一旦您启用了控制台,您可以通过访问您最喜欢的网页浏览器访问它: http://[您的滴滴的IP]:15672/
。
默认用户名和密码都为登录设置为客人
。
** 注意** :如果在运行该服务后启用此控制台,则需要重新启动,以便更改生效. 请参阅下面的相关管理部分,以便您的操作系统能够这样做。
基于CentOS / RHEL的系统管理
在安裝應用程式時,RabbitMQ 預設不會在系統啟動時啟動。
要将 RabbitMQ 作为默认的 DAEMON 启动,请执行以下操作:
1chkconfig rabbitmq-server on
若要启动、停止、重新启动和检查应用程序状态,请使用以下方法:
1# To start the service:
2/sbin/service rabbitmq-server start
3
4# To stop the service:
5/sbin/service rabbitmq-server stop
6
7# To restart the service:
8/sbin/service rabbitmq-server restart
9
10# To check the status:
11/sbin/service rabbitmq-server status
在 Ubuntu / Debian 基于系统上管理
要启动、停止、重新启动并检查 Ubuntu 和 Debian 上的应用程序状态,请使用以下方法:
1# To start the service:
2service rabbitmq-server start
3
4# To stop the service:
5service rabbitmq-server stop
6
7# To restart the service:
8service rabbitmq-server restart
9
10# To check the status:
11service rabbitmq-server status
你现在有自己的消息排队在你的虚拟服务器上工作。
创建 RabbitMQ
默认情况下,RabbitMQ 以其标准配置运行,一般来说,只要一切顺利运行,它不需要对大多数需求进行大量调节。
要了解如何根据自定义需求配置它,请参阅 配置的文档。