如何安装和管理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 默认情况下以其标准配置运行。一般情况下,只要一切正常运行,它就不需要太多的调整。

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

提交者: O.S. Tezer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/870699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

顶顶通呼叫中心中间件-私有化asrproxy配置热词模型

顶顶通呼叫中心中间件-私有化asrproxy配置热词模型 1、配置热词文件 将热词存在一个txt文件中,比如:hotword.txttxt文本里面写热词,一个热词一行,用utf8编码把热词文件上传到asrproxy程序目录中,路径:/dd…

音视频入门基础:H.264专题(12)——FFmpeg源码中通过SPS属性计算视频分辨率的实现

一、引言 在上一节《音视频入门基础:H.264专题(11)——计算视频分辨率的公式》中,讲述了通过SPS中的属性计算H.264编码的视频的分辨率的公式。本文讲解FFmpeg源码中计算视频分辨率的实现。 二、FFmpeg源码中计算视频分辨率的实现…

读人工智能全传10深度思维

1. 深度思维 1.1. DeepMind 1.1.1. 深度思维 1.1.2. 2014年的员工不足25人 1.1.3. 深度思维公司公开宣称其任务是解决智能问题 1.1.4. 2014年谷歌收购DeepMind,人工智能突然成了新闻热点,以及商业热点 1.1.4.1. 收购报价高达4亿英镑 1.1.4.2. 深度…

头歌资源库(26)方格填数

一、 问题描述 二、算法思想 这是一个排列组合问题。我们可以使用动态规划的思想来求解。 假设dp[i]表示填入前i个位置的数字的方案数。考虑第i个位置,它有9种填法(0~9减去前一个位置上的数字),则有dp[i] 9 * dp[i-1]。由于第…

ArduPilot开源飞控之AP_Mount_Backend

ArduPilot开源飞控之AP_Mount_Backend 1. 源由2. 框架设计2.1 类构造函数2.2 公共方法2.2.1 重要方法2.2.2 运动能力(需要在子类中重写)2.2.3 模式处理2.2.4 目标处理2.2.5 命令处理2.2.6 消息传递和状态2.2.7 回调函数2.2.8 相机控制2.2.9 测距仪 2.3 保…

samout 结构再优化 收敛速度再加快

代码 import torch import numpy as npclass MaxState(torch.nn.Module):def __init__(self, hidden_dim, heads, win):super(MaxState, self).__init__()assert hidden_dim % heads 0, "Hidden size must be divisible by the number of heads."self.head_size h…

基于python实现并编译提升cpu与内存使用率的脚本

在服务器运维过程中,有很多公司会对服务器的资源使用率进行监测,发现使用率不高了,会对服务器降配。如果你是乙方,你可以尝试一下这种方法,脚本提升cpu与内存的使用率。如果你需要对服务器性能或者服务稳定性进行测试&…

Redis 布隆过滤器性能对比分析

redis 实现布隆过滤器实现方法: 1、redis 的 setbit 和 getbit 特点:对于某个bit 设置0或1,对于大量的值需要存储,非常节省空间,查询速度极快,但是不能查询整个key所有的bit,在一次请求有大量…

240711_昇思学习打卡-Day23-LSTM+CRF序列标注(2)

240711_昇思学习打卡-Day23-LSTMCRF序列标注(2) 今天记录LSTMCRF序列标注的第二部分。仅作简单记录 Score计算 首先计算正确标签序列所对应的得分,这里需要注意,除了转移概率矩阵𝐏外,还需要维护两个大小…

担心插座预留的不够用,家里装修留多少开关插座

全屋插座布局,防漏防后悔      家里装修留多少开关插座?留多了费钱      留少了还不够用,给大家整理了全屋开关插座的布局      1,入户门留5个,门外给监控器1个      门旁边给卧室,走廊,客厅,中央空调各留1个      2,客厅留10个,电视留4-5个, 沙发两边各1…

html5——CSS基础选择器

目录 标签选择器 类选择器 id选择器 三种选择器优先级 标签指定式选择器 包含选择器 群组选择器 通配符选择器 Emmet语法&#xff08;扩展补充&#xff09; 标签选择器 HTML标签作为标签选择器的名称&#xff1a; <h1>…<h6>、<p>、<img/> 语…

如何做好漏洞扫描工作提高网络安全

在数字化浪潮席卷全球的今天&#xff0c;企业数字化转型已成为提升竞争力、实现可持续发展的关键路径。然而&#xff0c;这一转型过程并非坦途&#xff0c;其中网络安全问题如同暗礁般潜伏&#xff0c;稍有不慎便可能引发数据泄露、服务中断乃至品牌信誉受损等严重后果。因此&a…

edge 学习工具包 math solver

简介 推荐微软推出的学习工具中的两项工具&#xff1a;数学求解器和 pdf 阅读器。 打开 edge 学习工具包的方法 &#xff1a;右上角三点-更多工具-学习工具包。 math solver 除了基础的计算求解外&#xff0c;还用图标展示公式&#xff0c;清晰直观。 地址&#xff1a;求解…

CentOS7使用yum命令报错

目录结构 前言使用yum命令&#xff0c;报错信息问题排查解决方案参考文章 前言 安装CentOS 7 虚拟机&#xff0c;使用yum命令报错&#xff0c;调查整理如下&#xff1a; 使用yum命令&#xff0c;报错信息 [rootlocalhost ~]# sudo yum install net-tools 已加载插件&#xff…

OPenCV实现直方图均衡化----20240711

# 直方图均衡化import cv2 import numpy as np import matplotlib.pyplot as plt# 读取彩色图像 img = cv2.imread("./pictures/Lena.jpg")# 检查图像是否加载成功 if img is None:print("Could not open or find the i

每天五分钟深度学习:向量化技术在神经网络中的应用

本文重点 向量化技术,简而言之,就是利用矩阵运算(而非传统的for循环)来执行大规模的计算任务。这种技术依赖于单指令多数据(SIMD)架构,允许一个指令同时对多个数据元素执行相同的操作。例如,在向量化加法中,不再需要逐个元素进行加法操作,而是可以一次性对整个向量执…

【电子通识】无源元件与有源元件的定义和区别是什么?

当提到构成电路的电子器件时,许多人可能会想到晶体管、电容器、电感器和电阻器等器件。一般情况下,我们使用的电子器件分为两大类,即“有源元件”和“无源元件”。 有源元件是主动影响(如放大、整流、转换等)所供给电能的元件。 无源元件是对所供给的电能执行被动…

测试驱动开发的艺术:Xcode中实现TDD的全面指南

测试驱动开发的艺术&#xff1a;Xcode中实现TDD的全面指南 在软件开发过程中&#xff0c;测试驱动开发&#xff08;Test-Driven Development&#xff0c;TDD&#xff09;是一种以测试为先导的开发模式&#xff0c;它强调先编写测试用例&#xff0c;再编写功能代码&#xff0c;…

流程图编辑框架LogicFlow-vue-ts和js

LogicFlow官网https://site.logic-flow.cn/LogicFlow 是一款流程图编辑框架&#xff0c;提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。LogicFlow支持前端研发自定义开发各种逻辑编排场景&#xff0c;如流程图、ER图、BPMN流程等。在工作审批配…

【zabbix7】开启HTTP authentication实现单点登录

开启HTTP authentication实现单点登录 一、新建http验证用户 htpasswd -c /etc/nginx/.htpasswd another_username # 在提示中输入密码二、新建Nginx配置文件 把zabbix.conf拷贝一份&#xff0c;然后修改listen监听的端口。 cp zabbx.conf zabbix_http.conf 每个location中新…