RabbitMQ详解(一):Linux安装

news2024/10/6 20:38:07

消息队列概念

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

常见的消息队列

  • 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 broker
       Loaded: 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 ago
     Main 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 4
    
    May 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)]

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

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

相关文章

不要轻易放弃丢失的U盘文件夹数据,这里有按文件夹恢复数据的技巧

U盘,全名叫USB闪存盘,是一种便携式的存储设备,是一种可以插入到电脑等电子设备上进行数据传输和存储的硬件设备。U盘的使用方便、速度高、存储容量大、稳定性高,因此被广泛用于数据备份、文档传输、音频视频存储等方面。但是使用过…

easyrecovery免费版2023最新电脑数据恢复软件

通常,许多人会将工作或生活中的数据存储在我们的计算机上。很多时候,由于我们的误操作或其他一些问题,很容易错误地删除一些文件和数据。特别是,一些计算机故障总是会导致数据丢失,这是非常麻烦的。当需要重新安装系统…

【TA100】5 纹理的秘密

1 是什么? 2 为什么使用纹理 3 纹理管线 纹理投影 展开UV到UV坐标系 模型坐标> uv坐标 > 乘分辨率(256 256) > 颜色采样 4 纹理模式 重复,镜像重复,边界拉伸,填充颜色 5 采样模式 它决定了当纹理由于变换而产生拉伸时&a…

go小技巧(易错点)集锦

目录 len的魔力评论区大佬解答答案详解 结构体是否相等答案解析:结构体比较规则举例 常量的编译我的答案标准答案内存四区概念: new关键字答案 iota的魔力结果解析可跳过的值定义在一行中间插队 小结iota详解iota 原理iota 规则依赖 const按行计数多个io…

云数据库技术沙龙|多云多源下的数据复制技术解读-NineData

摘要:随着数据智能时代的到来,多云多源架构下的数据管理是企业必备的基础设施,我们认为数据存取、数据集成与分发、数据安全与数据质量是基础,也是走向多云多源架构的起点。本议题介绍云原生的多云多源数据管理NineData&#xff0…

PlSql存储过程基础

目录儿 常用指令1. 什么是PLSQL语言2. PLSQL程序结构2.1 第一个程序 HelloWord:2.2 执行程序2.2.1 在工具中执行2.2.2 在sqlplus客户端中执行(命令行) 3. 变量3.1 普通变量3.2 引用型变量3.3 记录型变量 4. 流程控制4.1 条件分支4.2 循环 5. 游标5.1 定义5.2 语法5.3 游标的属性…

或许你需要这套uni-app打包android与ios流程

1、hbuilder每个账户的每日云打包有上限次数限制,超出次数要么换账户要么换成本地打包(uni-app提供了足够多云端的打包次数) 2、android打包,也就是apk包 优先搞明白两个需求: 、android包名是否为默认值,如果是默认值&#xf…

基于轻量化深度学习网络的工业环境小目标缺陷检测

源自:控制与决策 作者:叶卓勋 刘妹琴 张森林 摘 要 工业环境下表面缺陷检测是质量管理的重要一环, 具有重要的研究价值.通用检测网络(如YOLOv4)已被证实在多种数据集检测方面是有效的, 但是在工业环境的缺陷检测仍需要解决两个问题: 一是缺陷实例在…

【接口测试】

【接口测试】 1、分层测试理论: UI测试(测试成本最高,发现BUG时间最晚) 接口测试 单元测试 2、协议分析工具 1)网络监听 TcpDump Wireshark 2)协议客户端工具 curl、postman 3)代理Pr…

phpstorm+phpstusy配置xdebug

真心觉得配置好麻烦呀 phpstorm版本: php版本用的7.3.4nts phpstudy版本:8.1.3 先下载xdebug,我用的是php_xdebug-3.1.6-7.3-vc15-nts-x86_64,phpstudy自带的那个xdebug我配置完不起作用 把下完的xdebug放到php下etc目录里,并改名为php_x…

C语言小项目之三子棋

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多C语言知识   🔝🔝 三子棋 1. 前言📕2. 思…

【英】考虑多能负荷不确定性的区域综合能源系统鲁棒规划(MatlabPython代码)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

寅家科技完成近亿元B1轮融资,加速高阶智能驾驶布局

近日,寅家科技宣布完成近亿元人民币B1轮融资,本轮融资由东方富海、深创投、深圳高新投联合投资,所募资金主要用于公司高阶智能驾驶技术产品的研发迭代,以及智能驾驶产品量产、海外市场开拓,从而进一步提升核心产品的市…

Solow模型推导模拟

Solow模型推导模拟 文章目录 Solow模型推导模拟[toc]1 Solow模型推导2 Solow模型模拟 1 Solow模型推导 在存在资本折旧、技术进步和人口增长条件下,有效劳动人均资本为 k ˙ ( t ) K ˙ ( t ) A ( t ) L ( t ) − K ( t ) [ A ( t ) L ( t ) ] 2 [ A ( t ) L ˙ …

腾讯云网站备案流程步骤、备案审核通过时间详细说明

腾讯云网站备案流程先填写基础信息、主体信息和网站信息,然后提交备案后等待腾讯云初审,初审通过后进行短信核验,最后等待各省管局审核,前面腾讯云初审时间1到2天左右,最长时间是等待管局审核时间,网站备案…

css新手引导实现方式总结

新手引导功能一般都是用一个半透明的黑色进行遮罩,蒙层上方对界面进行高亮,旁边配以弹窗进行讲解,样式如下 但是由于交互不同,实现方案也不一样,下面就针对不用的交互,总结了不同的实现方法(下文…

路由和寻址的区别

如果说传输层协议,除了 TCP/UDP,我们还可以有其他选择,比如 Google 开发的 QUIC 协议,帮助在传输层支持 HTTP 3.0 传输。但是在网络层,IP 协议几乎一统天下。IP 协议目前主要有两个版本 IPv4 和 IPv6。 根据 Google 统…

开发者一定要知道的 API 管理五大趋势

API First 大势所趋,APIaaS(API 作为服务)也将受到越来越多企业和组织的选择,研发团队对 API 研发管理工具的要求也水涨船高。 API 在今天的数字化世界中扮演着至关重要的角色,随着云计算、物联网、微服务尤其是 AI 等…

Uniapp 引入uView-ui 插件

前言 最近在写uniapp,用了一下原生的ui框架感觉不是很好看,打算去插件市场上面找一下好看的UI插件。学习不是闭门造车,自己重复造轮子。能自己解决和会不会用别人的方法是两回事。我自己也能写UI界面逻辑,但是这样太费时间了。最…

线宽变大,损耗变小;线宽无限大,损耗无限小?

一博高速先生成员:黄刚 作为高速信号传输的重要的指标之一,损耗,无论是对硬件工程师,设计工程师还是我们SI工程师来说,都会是非常的关注。而对于像背板传输这种长距离的走线系统或是像芯片测试板要求损耗极小的情况&a…