RabbitMQ消息队列 安装及基本介绍

一.MQ介绍

        Message Queue (MQ)是一种跨进程的通信机制,用于在系统之间进行传递消息。MQ作为消息中间件,可以进行异步处理请求,从而减少请求响应时间和解耦

1.1 应用场景

1.1.1 系统之间通过MQ进行消息通信,异步解耦

        多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败。

1.1.2 异步处理消息

        应用间并发处理消息,相比串行处理,减少处理时间;

        比如用户注册,系统需要发送注册邮件,验证短信。MQ作为消息中间件,可以进行异步处理请求,从而减少请求响应时间。

1.1.3 肖锋限流

        广泛应用于高并发系统中,避免流量过大导致处理请求阻塞的情况

二.RabbitMQ


        RabbitMQ是支持多种消息协议,易于部署和使用的开源消息代理服务器,用于在分布式系统中存储转发消息。

        RabbitMQ 是一个消息代理,用于在应用程序之间传递消息。它接收、存储并转发消息,允许不同的应用程序之间进行异步通信。

  • 由以高性能、健壮以及可伸缩性出名的Erlang语言编写;
  • 提供了成熟的高并发,高可用的解决方案 可以根据实际业务情况动态地扩展集群节点。
  • 在集群中的机器上设置镜像,使得在部分节点出现问题的情况下仍然可用。
  • 支持多种客户端语言,如:Python、Ruby、.NET、Java等,支持AJAX。
  • RabbitMQ提供了一个易用的用户界面,使得用户可以监控和管理消息、集群中的节点等。
MQ产品语言支持并发量消息回溯支持性能协议可靠性
RocketMQJava, C++较高支持良好自定义TCP良好
KafkaJava非常高不支持卓越自定义TCP良好
ActiveMQJava万级不支持一般JMS规范较差

  AMQP:RabbitMQ 实现了高级消息队列协议(AMQP),这是一个开放的、通用的消息协议,支持在分布式系统中可靠地传递消息。

  1. Producer:生产者,即消息的提供者,是发送消息的应用程序
  2. Consumer:消费者,即消息的使用者,接收并处理消息的应用程序。
  3. Message:消息,即进程之间进行通信的数据
  4. Queue:队列,即消息存放的容器,消息以先进先出的方式进行存储,生产者将消息发布到队列,而消费者则从队列中获取消息进行处理。
  5. 交换机:交换机是消息的分发中心,决定将消息路由到哪个队列。生产者将消息发送到交换机,交换机根据规则将消息路由到一个或多个队列。
  6. 绑定:绑定是交换机和队列之间的规则,它定义了如何将消息从交换机路由到特定的队列。
  7. 持久性:RabbitMQ 支持消息的持久性,确保即使在代理重新启动后,消息也不会丢失。
  8. Vhost:虚拟主机,用于存储消息队列。
  9. 虚拟主机vhost是AMQP概念的基础,RabbitMQ包含了开箱即用的默认虚拟主机"/“;
  10.  vhost之间是绝对隔离,保障了队列和交换机的安全性。  

 2.1 mac下 Mq安装

使用homebrew安装rabbitmq

官方文档参考:
The Homebrew RabbitMQ Formula | RabbitMQmac 下的安装命令:

## 更新命令
brew update

## 查找
brew search rabbitmq

## 安装
brew install rabbitmq

## 安装好后,查看rabbitmq的安装信息:
brew info rabbitmq

## 后台启动的方式
brew services start rabbitmq

## 停止rabbit服务器
brew services stop rabbitmq

2.2 环境变量

Intel Macs,把CLI工具路径设置了软连接,在 /usr/local/sbin
Apple Silicon Macs,在 `/opt/homebrew/sbin ;

rabbitmq-defaults -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-defaults
rabbitmq-diagnostics -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-diagnostics
rabbitmq-env -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-env
rabbitmq-plugins -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-plugins
rabbitmq-queues -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-queues
rabbitmq-server -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-server
rabbitmq-streams -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-streams
rabbitmq-upgrade -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmq-upgrade
rabbitmqadmin -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmqadmin
rabbitmqctl -> ../Cellar/rabbitmq/3.12.2/sbin/rabbitmqctl
vmware-rabbitmq -> ../Cellar/rabbitmq/3.12.2/sbin/vmware-rabbitmq

如果上面的路径没有在PATH里,则需要添加一下:

# for macOS Intel
export PATH=$PATH:/usr/local/sbin

# for Apple Silicon
export PATH=$PATH:/opt/homebrew/sbin

2.3 启动:

#方式一:
brew services start rabbitmq;
 
#方式二:进入默认的安装目录下,手动启动

2.4 安装RabbitMQWeb管理界面  

#默认情况下,rabbitmq是没有安装RabbitMQWeb管理界面及授权操作的 
rabbitmq-plugins enable rabbitmq_management
端口用处
5672RabbitMQ通讯端口,也就是连接使用的端口
15672RabbbitMQ管理界面端口,需要开启Management插件

说明:rabbitmq有一个默认账号和密码是:guest 默认情况只能在localhost本机下访问,所以需要添加一个远程登录的用户。

访问:http://ip:15672/本例子是安装本地的,所以这边访问地址:http://localhost:15672/ 

三、Rabbit管理段操作

3.1 进入管理界面

用户名:guest
密码:guest
前提:只有localhost才能访问

3.2创建用户:

#新建用户
rabbitmqctl add_user 账号 密码
#给用户分配操作权限
rabbitmqctl set_user_tags 账号 administrator
#修改密码
rabbitmqctl change_password Username Newpassword 修改密码
#删除用户
rabbitmqctl delete_user Username 删除用户
#查看所有用户
rabbitmqctl list_users 查看用户清单
#为用户设置访问权限
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*" 
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
角色权限说明
超级管理员administrator用户可以做监控所能做的一切,管理用户、vhosts和权限,关闭其他用户的连接,并管理所有vhosts的策略和参数
监控者monitoring可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
策略制定者policymaker可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
普通管理者management仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
其他无法登陆管理控制台,通常就是普通的生产者和消费者。

3.3 创建 Virtual Hosts

选中 Admin 用户设置权限

四、队列的工作模式

模式

交换机

图例

说明

Simple简单模式

 一个生产者对应一个消费者

work工作模式

一对多,每个消费者得到的消息唯一(work模式下最大发挥每个消费者的性能)

发布订阅模式

FANOUT

一对多,生产者将消息发送给交换机,交换机再将消息转发给与之绑定的队列,发布订阅模式对应的交换机类型是FANOUT

Routing路由模式

DIRECT

        一对多,可以根据指定的路由key,将消息发送给不同的队列,交换机类型是DIRECT

Topic主题模式

Topic

 一对多,在Routing路由模式的基础上,可以使用通配符定义路由key

  * 匹配单个字符

   # 匹配任意个字符

一个简单的一个消息推送到接收的流程,提供一个简单的图 

黄色的圈圈就是我们的消息推送服务,将消息推送到 中间方框里面也就是 rabbitMq的服务器,然后经过服务器里面的交换机、队列等各种关系(后面会详细讲)将数据处理入列后,最终右边的蓝色圈圈消费者获取对应监听的消息。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Android Studio导入源码

2-1 基础准备工作 首先你得安装配置了Android Studio,具体不明白的参考《Android Studio入门到精通 》。 接着你得下载好了源码Code,至于如何下载这里不再说明,比较简单,上官网查看就行了。 其次你需要保证源码已经被编译生成了…

Scala运算符及流程控制

Scala运算符及流程控制 文章目录 Scala运算符及流程控制写在前面运算符算数运算符关系运算符赋值运算符逻辑运算符位运算符运算符本质 流程控制分支控制单分支双分支多分支 循环控制for循环while循环循环中断嵌套循环 写在前面 操作系统:Windows10JDK版本&#xff…

项目训练营第一天

项目训练营第一天 springboot后端环境搭建 1、首先需要找文章下载好tomcat、JDK、maven、mysql、IDEA。(软件下载及环境变量配置略) 2、在下载好的IDEA中,选择新建spring initial项目,选定java web,即可新建一个spri…

如何设置MySQL远程访问权限?

MySQL是一种流行的关系型数据库管理系统,它广泛应用于各种Web应用程序和数据驱动的应用中。在默认情况下,MySQL只允许本地访问,为了能够从远程服务器或客户端访问MySQL数据库,我们需要进行一些额外的设置和配置。 安装和配置MySQ…

OSPF 2类LSA详解

概述 上图为2类LSA : Network LSA 的报文格式 , 我们重点关注3个报文字段即可 , 其他内容没有实际的信息 Link State ID : DR的接口IP地址 Network Mask : 该MA网络的掩码 Attached Router : 连接在该MA网络的所有路由器的Router ID 2类LSA一定是DR产生的 , 关于OSPF DR的细节…

LeetCode 671.二叉树第二小的结点

这个题我们可以用数组辅助完成,然后进行排序后,再用再进行取值,这是我的代码块: /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/void Preorde…

从工具产品体验对比spark、hadoop、flink

作为一名大数据开发,从工具产品的角度,对比一下大数据工具最常使用的框架spark、hadoop和flink。工具无关好坏,但人的喜欢有偏好。 目录 评价标准1 效率2 用户体验分析从用户的维度来看从市场的维度来看从产品的维度来看 3 用户体验的基本原则…

关于edge浏览器注册Kaggle不显示验证部分的问题

使用edge注册kaggle没有显示验证的部分导致无法完成注册 法一 谷歌大法好,使用谷歌注册就么有问题,然鹅需要魔法上网。 法二 使用 edge的Header Editor的插件 收到邮件后填写即可 参考博客: Kaggle平台注册弹不出验证码怎么办&#…

STM32读写备份寄存器和实时时钟

文章目录 1. 硬件电路 2. RTC操作注意事项 操作步骤 3. 代码实现 3.1 读写备份寄存器 3.1.1 main.c 3.2 实时时钟 3.2.1 MyRTC.c 3.2.2 MyRTC.h 3.2.3 main.c 1. 硬件电路 对于BKP备份寄存器和RTC实时时钟的详细解析可以看下面这篇文章: STM32单片机BKP备…

读线圈和离散状态寄存器信息

一.功能码操作类型 二.读线圈状态 需求实例 读取设备地址为 3 的从设备的线圈状态寄存器,线圈地址为 19 到 55(从 0 开始计算)共 37 个状态。 分析:由需求可知读取地址,则功能码是0x01,地址为3即为0x03,线圈地址为19到…

目前哪个充电宝品牌比较好?四款优质充电宝分享

在电量成为现代生活不可或缺的生产资源的时代,选择一款优质的充电宝无疑是保证移动设备持续运作的关键。面对市场上众多品牌和型号的充电宝,消费者在选择时可能会感到困惑和迷茫。本文将为您揭示哪些品牌真正代表了耐用性和质量的典范,让自己…

字节大神强推千页PDF学习笔记,弱化学历问题,已拿意向书字节提前批移动端!

主要问java,以及虚拟机,问了一点android 1.实习项目有关的介绍以及问题回答 2.反射与代理的区别,动态代理,静态代理,二者的区别,以及代理模式的UML图 3.字节码技术 4.虚拟机的双亲委派,以及好…

【需求管理】软件需求开发和管理文档(原件Word)

1. 目的 2. 适用范围 3. 参考文件 4. 术语和缩写 5. 需求获取的方式 5.1. 与用户交谈向用户提问题 5.1.1. 访谈重点注意事项 5.1.2. 访谈指南 5.2. 参观用户的工作流程 5.3. 向用户群体发调查问卷 5.4. 已有软件系统调研 5.5. 资料收集 5.6. 原型系统调研 5.6.1. …

envi5.6+SARscape560安装(CSDN_20240623)

envi和SARscape的版本必须匹配,否则有些功能不能使用。 Envi5.6安装 1. 点击安装程序. 2. 进入安装界面,点击“Next”. 3. 选择“I accept the agreement”,点击“Next”。 4. 选择安装路径,建议直接安装在默认路径下&#xff0…

Nginx实战:简单登录验证配置(基于openssl)

本文提供的是基于openssl创建的密码文件,对nginx指定的location访问。进行登录验证的配置方式。 1、验证页面配置 我的nginx实验环境是直接yum安装的,如果是自己编译安装的那么对应目录就是自己安装配置的目录。 先在/usr/share/nginx/html下创建一个usertest.html,里面添加…

威纶通触摸屏以太网一机多屏设置

STEP 1 新增本机PLC,与PLC的通讯参数设置 STEP2 新增远端PLC,使用以太网方式,IP与主屏保持一致 PLC类型、接口类型与主屏上保持一致 分享创作不易,请多多支持,点赞、收藏、关注! Ending~

四年Android,终于咸鱼翻身!8K到25K全靠这份高级面试题+解析!

1、哪些情况下的对象会被垃圾回收机制处理掉? 2、讲一下常见编码方式? 3、utf-8 编码中的中文占几个字节;int 型几个字节? 4、静态代理和动态代理的区别,什么场景使用? 5、Java 的异常体系 6、谈谈你对解析…

【网络安全学习】漏洞扫描:- 02- nmap漏洞扫描

1.nmap的介绍 Nmap是一款功能强大的网络探测和安全扫描工具,可以对目标进行端口扫描、服务探测、操作系统指纹识别等操作。 Nmap自带了许多内置的NSE脚本,它们可以根据不同的目标和场景来执行不同的功能。这些脚本存放在Nmap安装目录**/usr/share/nmap…

大学食堂管理系统

摘 要 随着信息技术的飞速发展和高校规模的不断扩大,大学食堂作为高校日常运营的重要组成部分,其管理效率和服务质量直接影响到师生的日常生活和学习。传统的食堂管理方式,如手工记录、纸质菜单、人工结算等,不仅效率低下&#x…

LED显示屏的换帧频率与刷新频率:技术细节与市场发展

在当今数字化时代,LED显示屏已成为信息传递和广告宣传的重要工具。然而,对于普通消费者来说,LED显示屏背后的技术细节可能仍然是一个谜。今天,我们将深入探讨LED显示屏中的两个关键概念:换帧频率和刷新频率&#xff0c…