当前位置: 首页 > news >正文

RabbitMQ详解(一):Linux安装

消息队列概念

消息队列是在消息的传输过程中保存消息的容器。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

常见的消息队列

  • RabbitMQ

    基于AMQP(高级消息队列协议)基础上完成的,erlang语言开发的企业消息系统,是当前最主流的消息中间件之一,下文我们会详细介绍这一种。

  • ActiveMQ

    基于JMS 规范,Apache软件基金会所研发的开源产品,用 Java 语言实现

  • RocketMQ

    基于JMS 规范,阿里公司的开源产品,用 Java 语言实现

  • Kafka

    阿里公司的开源产品,一种高吞吐量的分布式发布订阅消息系统

持久化对比

简单来说就是将数据存入磁盘,而不是存在内存中随服务器重启断开而消失,使数据能够永久保存

ActiveMQRabbitMQKafkaRocketMQ
文件存储支持支持支持支持
数据库支持///

分发策略对比

MQ消息队列有如下几个角色

  • 生产者
  • 存储消息
  • 消费者

那么生产者生成消息以后,MQ进行存储,消费者是如何获取消息的呢?

​ 一般获取数据的方式无外乎推(push)或者拉(pull)两种方式,典型的git就有推拉机制,我们发送的http请求就是一种典型的拉取数据库数据返回的过 程。而消息队列MQ是一种推送的过程,而这些推机制会适用到很多的业务场景也有很多对应推拉机制策略。

ActiveMQRabbitMQRocketMQKafka
发布订阅支持支持支持支持
轮询分发支持支持/支持
公平分发/支持/支持
重发支持支持支持/
消息拉取/支持支持支持

RabbitMQ概念

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

AMQP协议

AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。

是在tcp/ip协议基础之上构建的一种约定成俗的规范和机制,它使得遵从该规范的客户端应用和消息中间件服务器的全功能互操作成为可能.

面试题:为什么消息中间件不直接使用http协议呢?

  • 一是因为http协议的请求和响应报文头都是很复杂的,对于一个消息来说不需要这么复杂,只需要负责数据的传递,存储和分发即可,一定要追求的是高性能
  • 二是大部分情况下http协议都是短链接,这就导致数据可能会丢失,而消息中间件是长期获取消息的过程,出现问题就要对数据进行持久化,目的就是为了保障数据的稳定运行

安装

官网地址: https://www.rabbitmq.com/

下载地址:https://www.rabbitmq.com/download.html

版本兼容

官方版本兼容比较地址:https://www.rabbitmq.com/which-erlang.html

在这里插入图片描述

一定要注意版本问题 rabbitmq+erlang+centos的版本得都得考虑

centos7用erlang23版本或者23以下版本,centos8用erlang24版本

查看系统版本号

[root@hecs-66166 ~]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.9.2009 (Core)
Release:        7.9.2009
Codename:       Core

Erlang安装

  • RabbitMQ是采用Erlang语言开发的,所以系统环境必须提供Erlang环境,第一步就是安装Erlang。

  • 下载地址: https://www.erlang-solutions.com/downloads/ ,这个下载速度非常的慢,可以从我的网盘地址 直接下载

  • 将下载的安装包上传到/usr/rabbitmq包下,需要新建目录rabbitmq
    在这里插入图片描述

  • 安装命令

    rpm -ivh erlang-21.3-1.el7.x86_64.rpm
    

    在这里插入图片描述

  • 查看版本

    erl -v
    

    在这里插入图片描述

socat安装

  • RabbitMQ需要的依赖:socat和logrotate,logrotate操作系统中已经存在了,只需要安装socat就
    可以了。

  • 安装命令

    yum install -y socat
    

    在这里插入图片描述

RabbitMQ安装

  • 下载地址: https://www.rabbitmq.com/download.html,这个下载速度也是非常的慢,可以从我的网盘地址 直接下载

  • 将下载的安装包上传到/usr/rabbitmq包下

    在这里插入图片描述

  • 安装命令

    rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
    

    在这里插入图片描述

  • 启动服务

    [root@hecs-66166 rabbitmq]# systemctl start rabbitmq-server
    [root@hecs-66166 rabbitmq]# systemctl status rabbitmq-server
    ● rabbitmq-server.service - RabbitMQ brokerLoaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)Active: active (running) since Wed 2023-05-10 02:19:55 CST; 11s agoMain PID: 10260 (beam.smp)Status: "Initialized"CGroup: /system.slice/rabbitmq-server.service├─10260 /usr/lib64/erlang/erts-10.3/bin/beam.smp -W w -K true -A 64 -MBas ageffcbf -MHas...├─10365 erl_child_setup 32768├─10390 /usr/lib64/erlang/erts-10.3/bin/epmd -daemon├─10413 inet_gethost 4└─10414 inet_gethost 4May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: ##########  Licensed under the MPL 2.0. Websi...com
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Doc guides: https://rabbitmq.com/documentation.html
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Support:    https://rabbitmq.com/contact.html
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Tutorials:  https://rabbitmq.com/getstarted.html
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Monitoring: https://rabbitmq.com/monitoring.html
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Logs: /var/log/rabbitmq/rabbit@hecs-66166.log
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: /var/log/rabbitmq/rabbit@hecs-66166_upgrade.log
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Config file(s): (none)
    May 10 02:19:55 hecs-66166 rabbitmq-server[10260]: Starting broker... completed with 0 plugins.
    May 10 02:19:55 hecs-66166 systemd[1]: Started RabbitMQ broker.
    Hint: Some lines were ellipsized, use -l to show in full.
    
  • 命令

    # 启动服务
    > systemctl start rabbitmq-server
    # 查看服务状态
    > systemctl status rabbitmq-server
    # 停止服务
    > systemctl stop rabbitmq-server
    # 开机启动服务
    > systemctl enable rabbitmq-server
    

相关端口

  • 5672:RabbitMQ的通讯端口
  • 25672:RabbitMQ的节点间的CLI通讯端口是
  • 15672:RabbitMQ HTTP_API的端口,管理员用户才能访问,用于管理RabbitMQ,需要启动Management插件。
  • 1883,8883:MQTT插件启动时的端口。
  • 61613、61614:STOMP客户端插件启用的时候的端口。
  • 15674、15675:基于webscoket的STOMP端口和MOTT端口

图形化管理界面及授权操作

安装

  • 安装命令

    rabbitmq-plugins enable rabbitmq_management
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oZdR8Jyh-1683683403067)(RabbitMQ.assets/image-20230510022210015.png)]

  • 重启mq服务

    systemctl restart rabbitmq-server
    

    一定要记住,在对应服务器(阿里云,腾讯云等)的安全组中开放15672的端口,如果有安装的宝塔同样也要开放15672端口

  • 浏览器访问http://ip:15672/

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FwoP7m5L-1683683403067)(RabbitMQ.assets/image-20230510090021950.png)]

授权账号和密码

  • 新增用户

    rabbitmqctl add_user admin admin
    
  • 设置用户角色

    用户级别:
    1、administrator 可以登录控制台、查看所有信息、可以对rabbitmq进行管理
    2、monitoring 监控者 登录控制台,查看所有信息
    3、policymaker 策略制定者 登录控制台,指定策略
    4、managment 普通管理员 登录控制台[root@hecs-66166 rabbitmq]# rabbitmqctl set_user_tags admin administrator
    Setting tags for user "admin" to [administrator] ...
    
  • 为用户设置权限

    rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
    
  • 登录访问

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fj4ejOQc-1683683403068)(RabbitMQ.assets/image-20230510022508669.png)]

  • 命令小结

    #添加用户
    rabbitmqctl add_user 账号 密码
    #设置用户操作角色
    rabbitmqctl set_user_tags 账号 administrator
    #修改用户密码
    rabbitmqctl change_password Username Newpassword 修改密码
    #删除用户
    rabbitmqctl delete_user Username
    #查看用户清单
    rabbitmqctl list_users 查看用户
    #设置用户资源权限
    rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*" 
    

用户角色分类

  • none

    什么也干不了,也无法登陆到图形化界面, 基本也没有用

  • management 普通管理员

    相当于个人中心,只查看自己的相关节点信息

  • policymaker 策略制定者

    在个人中心基础上,可以管理 (创建、删除) 自己的虚拟机节点和参数信息

  • monitoring 监控者

    和管理员一样,除了看自己的还是看别人的,但是只能看,不能操作别人的

  • Administrator 超级管理员

    顶级管理员,可登陆控制台、查看所有信息、可对 rabbitmq进行管理 (全部)

页面介绍

  • Overview

    主要展示的是MQ的概要信息 , 如消息的数量,ConnectionChannelExchangeQueueConsumer的数量

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NjROJDB5-1683690419289)(RabbitMQ.assets/image-20230510114250179.png)]

  • connections

    查看生产者或消费者与RabbitMQ建立连接后的信息

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-toCbX6a2-1683690419290)(RabbitMQ.assets/image-20230510114354511.png)]

  • channels

    通道,建立连接后,会形成通道,消息的投递获取依赖通道

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lr7X40Ax-1683690419290)(RabbitMQ.assets/image-20230510114409578.png)]

  • Exchanges

    交换机,用来实现消息的路由,主要展示的是当前虚拟主机下的交换器,也可以在此添加一个新的交换器, 并且配置对应的交换器的规则属性

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VFP88R5B-1683690419291)(RabbitMQ.assets/image-20230510114436589.png)]

  • Queues

    队列,即消息队列,消息存放在队列中,等待消费,消费后被移除队列

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XfQvoXeP-1683690419291)(RabbitMQ.assets/image-20230510114500722.png)]

  • Admin

    系统管理,展示的是用户管理的信息, 包含用户列表的展示,添加用户,添加虚拟主机等信息

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T5AUx9Xc-1683690419291)(RabbitMQ.assets/image-20230510114512619.png)]

相关文章:

RabbitMQ详解(一):Linux安装

消息队列概念 消息队列是在消息的传输过程中保存消息的容器。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。 常见的消息队列 RabbitMQ 基于AMQP(高级消息队列协议)基础上…...

Mojo:比 Python 快 35000 倍的 AI 编程语言

Mojo:比 Python 快 35000 倍的 AI 编程语言 Mojo是一门刚刚发布的面向 AI 开发人员的编程语言。 Mojo 被设计为 Python 的超集,所以如果你已经掌握了 Python,学习 Mojo 会很容易。关键是 Mojo 将 Python 的易用性与 C 语言的性能相结合&am…...

1703_LibreOffice常用功能使用体验

全部学习汇总: GreyZhang/windows_skills: some skills when using windows system. (github.com) 首先需要说明的是我不是一个重度Office用户,甚至算不上一个重度的Office用户。我使用的Office软件最多的功能就是文档编辑,绝大多数时候还是文…...

Postgres:Win/Linux环境安装及一键部署脚本

1.Win安装Postgres (1)下载安装包 (2)开始安装 修改安装目录 选择要安装的组件 data也就是库表及数据的.dba文件存放目录 密码设置 端口设置 next next 开始安装 安装完成,Stack Builder 根据需要选择是否安装。仅仅是…...

每日一题144——数组大小减半

给你一个整数数组 arr。你可以从中选出一个整数集合,并删除这些整数在数组中的每次出现。 返回 至少 能删除数组中的一半整数的整数集合的最小大小。 示例 1: 输入:arr [3,3,3,3,5,5,5,2,2,7] 输出:2 解释:选择 {3,…...

运维必懂的13条高效工作秘诀

正确做事,更要做正确的事 “正确地做事”强调的是效率,重视做一件工作的最好方法;“做正确的事”强调的是效能,重视时间的最佳利用——这包括是做或者不做某项工作。 实际上,第一重要的却是效能而非效率,…...

【牛客刷题专栏】0x26:JZ25 合并两个排序的链表(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏:个人CSDN牛客刷题专栏。 题目来自:牛客/题库 / 在线编程 / 剑指offer: 目录 前言问…...

5/5~5/7总结

把socket通信改成了分成短连接和长连接,登录前的所有操作都是短连接,每次都关闭连接,如果登录成功了就保持该socket连接,登录成功之后的所有操作,修改资料,发信息等都用该socket, 服务端和客户…...

重要通知|Sui测试网将于5月11日重置

致Sui社区成员们: 正如之前公告所述,部分社区成员发现测试网可能会定期清除数据并重新启动。鉴于此,我们宣布计划将于2023年5月11日进行首次测试网清除。 对于想要继续读取和访问当前测试网络的社区成员,请使用由Mysten Labs在…...

教你快速把heic格式转化jpg,4种方法操作简单

教你快速把heic格式转化jpg的方法,因为HEIC格式图片通常出现在苹果公司的iOS 11操作系统及之后的版本中,这是因为苹果公司在这些版本中采用了HEIF(高效图像格式)作为默认的照片格式来替代JPEG格式。同时,需要注意的是&…...

交互式数据分析和处理新方法:pandas-ai =Pandas + ChatGPT

Python Pandas是一个为Python编程提供数据操作和分析功能的开源工具包。这个库已经成为数据科学家和分析师的必备工具。它提供了一种有效的方法来管理结构化数据(Series和DataFrame)。 在人工智能领域,Pandas经常用于机器学习和深度学习过程的预处理步骤。Pandas通…...

FIR滤波

参考来源: https://www.zhihu.com/question/323353814 本节主要围绕以下几个问题进行描述: 什么是FIR滤波器时域的卷积频域的相乘 关于FIR FIR滤波就是在时域上卷积的过程。将含噪声信号与低通滤波器的傅里叶逆变换值进行卷积,这个过程就是…...

Python小姿势 - Python中的类型检查

Python中的类型检查 在Python中,类型检查是通过内置函数isinstance()来实现的。 isinstance() 函数用于判断一个对象是否是一个已知的类型,类似 type()。 isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型。 isinstance() 会…...

人工智能前景

人工智能AI的未来非常广阔和光明。随着科技的不断发展和普及,人工智能已经开始逐渐融入我们生活的方方面面,比如智能家居、智能医疗、无人驾驶等等。未来,随着更多的应用场景被开拓和挖掘,人工智能的应用范围将会越来越广泛&#…...

python并发编程学习笔记--生产者消费者模型 day02

目录 1. 什么是生产者消费者模型 2. 为什么引入生产者消费者模型 3. 如何实现 4. 示例 1. 什么是生产者消费者模型 生产者 : 程序中负责产生数据的一方消费者 : 程序中负责处理数据的一方 2. 为什么引入生产者消费者模型 在并发编程中, 生产者消费者模式通过一个容器来解…...

彩蛋丨利用R语言脚本实现批量合并Excel表格,再也不用手动点来点去了!

利用R语言脚本实现批量合并Excel表格 在整理数据的时候遇到一个问题:假如有很多个excel表,分别存放了一部分数据,现在想要快速把这些表格的数据汇总到一起,如何用R语言快速完成呢?本文分享一个脚本,能够自动…...

深入学习MYSQL-数据操纵及视图

前言 本博客中的例子和文字大部分来源于书籍《mysql必会知识》,后续会根据更多的书籍不断完善此笔记。 插入操作 可以这种方式向数据库插入两条数据,mysql和pg都支持这种写法。在实战中我们应该更多的使用这种写法,因为数据库的批量操作会…...

深入讲解eMMC简介

1 eMMC是什么 eMMC是embedded MultiMediaCard的简称,即嵌入式多媒体卡,是一种闪存卡的标准,它定义了基于嵌入式多媒体卡的存储系统的物理架构和访问接口及协议,具体由电子设备工程联合委员会JEDEC订立和发布。它是对MMC的一个拓展&#xff0…...

ICV:中国车载超声波雷达市场规模预计2024年可达20亿美元

近年来,由于市场对车辆先进安全功能的需求的增加,汽车超声波传感器市场一直保持稳步增长。ICV估计,车载超声波传感器全球市场预计在2022年至2027年之间以11.5%的复合年增长率增长,这种增长是由越来越多的高级驾驶辅助系…...

PointNet:利用深度学习对点云进行3D分类和语义分割

PointNet:利用深度学习对点云进行3D分类和语义分割 参考自,PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 代码仓库地址为:https://github.com/charlesq34/pointnet/ 介绍 这次介绍的是一个比较基础的工作…...

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...