开发知识点-RabbitMQ

在这里插入图片描述

RabbitMQ

  • 下载与介绍
  • 权限了解
  • 消息状态
  • rabbitmqctl命令与操作配置
    • 常见错误
    • 常见问题
    • 日志
  • poc-yaml-rabbitmq-default-password

下载与介绍

RabbitMQ是一个使用Erlang语言开发 开源的消息中间件项目(Message Broker),
采用Mozilla Public License(MPL)开源许可证。这意味着任何人都可以自由获取、使用、修改和分发RabbitMQ的源代码。

实现了高级消息队列协议(AMQP)并提供可靠的、异步的消息传递机制。
可以让你在不同的应用之间传递数据,用来实现分布式系统中的异步通信。
有很多优点,比如可靠性、灵活性、集群性、多协议支持等。

RabbitMQ由Pivotal Software公司进行开发和维护。

开发者可以在RabbitMQ的官方网站上找到相关的文档、示例代码、技术支持和社区讨论等资源,以帮助他们学习和使用RabbitMQ。
同时,由于是开源项目,任何人都可以参与到RabbitMQ的开发和贡献中。

RabbitMQ的主要特点和功能包括:

  1. 消息传递:RabbitMQ使用消息队列和发布/订阅模式来支持消息传递。它允许应用程序通过发送和接收消息来进行异步通信,并且可以确保消息的可靠性、顺序性和持久化。

  2. 多语言支持:RabbitMQ提供了多个编程语言的客户端API,如Java、Python、.NET、Ruby等,使得开发者可以使用自己熟悉的语言与RabbitMQ进行交互。这使得RabbitMQ具有广泛的可扩展性和互操作性。

  3. 消息确认和回退:RabbitMQ支持消息的确认机制,即在消息被消费之后,消费者可以向RabbitMQ发送确认消息。如果消息处理失败,消费者可以将消息退回到队列中,或者将其发送到死信队列。

  4. 路由和交换机:RabbitMQ通过路由和交换机的机制来决定消息的发送和接收方式。它支持不同类型的交换机,如直接交换机、主题交换机和扇出交换机,以满足不同的消息路由需求。

  5. 高可用性和可伸缩性:RabbitMQ支持集群部署和镜像队列,在多台服务器之间实现消息的复制和负载均衡。这使得RabbitMQ具有高可用性和可伸缩性,可以处理高并发和大规模的消息流量。

  6. 插件和扩展性:RabbitMQ提供了丰富的插件和扩展机制,可以实现各种定制化的功能和行为。开发者可以根据具体需求安装和配置插件,以扩展RabbitMQ的功能,如用户认证、消息转换等。

要使用RabbitMQ,你需要安装Erlang语言和RabbitMQ服务端,
然后在你的客户端程序中引入RabbitMQ的客户端库,
比如Java的spring-boot-starter-amqp。
你还需要了解一些RabbitMQ的基本概念,比如交换机、队列、绑定、路由键等

https://www.erlang.org/downloads
https://www.rabbitmq.com/install-windows.html

RabbitMQ中有一个重要的概念:
worker,也就是消费者,它是从队列中获取并处理消息的程序。

权限了解

RabbitMQ的用户角色分类:
none、management、policymaker、monitoring、administrator

RabbitMQ各类角色描述:
none
不能访问 management plugin

management
用户可以通过AMQP做的任何事外加:
列出自己可以通过AMQP登入的virtual hosts
查看自己的virtual hosts中的queues, exchanges 和 bindings
查看和关闭自己的channels 和 connections
查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。

policymaker
management可以做的任何事外加:
查看、创建和删除自己的virtual hosts所属的policies和parameters

monitoring
management可以做的任何事外加:
列出所有virtual hosts,包括他们不能登录的virtual hosts
查看其他用户的connections和channels
查看节点级别的数据如clustering和memory使用情况
查看真正的关于所有virtual hosts的全局的统计信息

administrator
policymaker和monitoring可以做的任何事外加:
创建和删除virtual hosts
查看、创建和删除users
查看创建和删除permissions
关闭其他用户的connections

RabbitMQ用户的主题权限是指用户在发布或消费主题交换器上的消息时,需要满足的路由键的匹配规则 主题权限是在虚拟主机级别设置的,可以使用rabbitmqctl命令或HTTP API来配置
例如,下面的命令给用户tester在虚拟主机test_vhost上设置了主题权限,
只允许他使用以tester-开头的路由键来发布或消费amq.topic交换器上的消息]

sudo rabbitmqctl set_topic_permissions -p /test_vhost tester amq.topic "^tester-.*" "^tester-.*"

消息状态

-   Ready 指的是队列中等待被消费的消息的数量,也就是说,这些消息已经被发布到队列中,但还没有被分配给消费者。
-   Unacked 指的是队列中已经被分配给消费者,但还没有被确认的消息的数量,也就是说,这些消息已经被消费者接收,但还没有被消费者处理完毕或通知队列。
-   Total 指的是队列中所有消息的数量,也就是 ReadyUnacked 的和,也就是说,这些消息包括了等待被消费和正在被消费的两种状态。

rabbitmqctl命令与操作配置

使用rabbitmqctl命令行工具,它可以查询和管理RabbitMQ服务器的状态和配置。
ps:在 Windows 上,rabbitmqctl变为rabbitmqctl.bat并且 shell 转义会有所不同rabbitmqctl status 来查看 RabbitMQ 的运行状态
使用 REST API 来调用 RabbitMQ 的管理接口
例如,你可以输入 curl -i -u guest:guest http://localhost:15672/api/overview 
来查看 RabbitMQ 的概括信息停止RabbitMQ应用
rabbitmqctl stop_apprabbitmqctl reset
来重置RabbitMQ服务器
这样会清除所有的配置和队列,包括workerrabbitmqctl start_app重新启动RabbitMQ应用。
注意:这种方法相当于重置RabbitMQ,请谨慎操作,可能会导致数据丢失。添加用户
rabbitmqctl add_user 用户名 密码列出用户
rabbitmqctl list_users
rabbitmqctl start_app
ps:一般只有一个guest用户检查你的用户或密码是否正确,你可以使用
rabbitmqctl authenticate_user
来验证你的凭证 检查你的用户是否有足够的权限来连接rabbitmq,
可以使用rabbitmqctl list_permissions --vhost Godhost
来查看你的用户的权限配置用户角色
rabbitmqctl set_user_tags 用户名 角色
(总共五种角色)虚拟主机
rabbitmqctl add_vhost {vhost}rabbitmqctl list_vhosts
rabbitmqctl delete_vhost /用户标签用户权限配置权限
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
您的用户没有足够的权限访问交换机或队列。您可以尝试使用rabbitmqctl命令清除和设置权限,例如:
rabbitmqctl clear_permissions -p Godhost aming 
rabbitmqctl set_permissions -p Godhost aming "." "." ".*"
这样您的用户aming就可以访问Godhost虚拟主机中的任何交换机或队列了。查看队列中有多少消息使用AMQP 0-9-1协议,通过queue.declare方法的返回值(queue.declare-ok)中的message_count字段。
使用RabbitMQ HTTP API。查看队列中的消息数量和状态
rabbitmqctl list_queues
rabbitmqctl list_queues name messages
来查看队列的名称和消息数
可以使用 RabbitMQ 的管理界面来查看队列中的消息内容和人工发送消息内容
点击 queues,然后点击 Get Message(s) 来获取队列中的消息,
或者点击 Publish message 来发送消息你也可以使用RabbitMQ管理插件,它提供了一个基于Web的用户界面,可以方便地监控和管理RabbitMQ服务器。
你可以在浏览器中访问http://<host>:15672来打开管理界面,
然后在Overview或者Queues页面中查看当前的消费者信息.rabbitmq-plugins.bat enable rabbitmq_management
http://localhost:15672/,输入默认用户名和密码,都是guest  
在Queues页面中选择任意一个队列,点击名称进入,滑动到最下面,可以看到有个Delete按钮,
点击即可删除该队列
这样会断开该队列上的所有worker的连接。
你需要对每个队列都进行这样的操作,才能清除所有的worker。这种方法比较繁琐,但是不会影响其他的配置和数据。可以使用RabbitMQ客户端库提供的API,来编写自己的程序来清除所有的worker。
不同的语言和框架可能有不同的API,但一般都会提供一个方法来删除队列或者取消消费者。
例如,在Python中,你可以使用pika库来连接RabbitMQ服务器,
并使用channel.queue_delete方法来删除队列,
或者使用channel.basic_cancel方法来取消消费者。
你需要遍历所有的队列,并对每个队列执行这样的操作,才能清除所有的worker。 查看当前运行的worker
你可以使用rabbitmqctl命令行工具,它可以查询和管理RabbitMQ服务器的状态和配置。rabbitmqctl list_consumers
查看当前所有的消费者信息,包括队列名、通道标识、消费者标签等。使用RabbitMQ客户端库提供的API,来编写自己的程序来查询当前的消费者信息。
不同的语言和框架可能有不同的API,
但一般都会提供一个方法来获取队列的状态或者属性,其中包括消费者数量和消费者标签等信息。例如,在Java中,你可以使用Channel类的queueDeclarePassive方法来获取一个已存在队列的属性。rabbitmq.conf
命令行中使用 -l 或 --listen 参数。例如:
如果你想让 rabbitmq 服务器监听所有接口的 5672 端口(默认设置),
你可以在 rabbitmq.conf 文件中写:
listeners.tcp.default = 5672如果你想让 rabbitmq 服务器监听 192.168.1.99 接口的 5672 端口,
你可以在 rabbitmq.conf 文件中写:
listeners.tcp.1 = 192.168.1.99:5672
如果你想让 rabbitmq 服务器监听多个接口和端口,
你可以在 rabbitmq.conf 文件中写:
listeners.tcp.1 = 192.168.1.99:5672
listeners.tcp.2 = [::1]:5673
如果你想在命令行中指定监听的接口和端口,
你可以使用 -l 或 --listen 参数,例如:
rabbitmq-server -l 192.168.1.99:5672

常见错误

用户缓存 替换
C:\Windows\System32\config\systemprofile
C:\Users\amingMM
.erlang.cookie如果你的计算机名或者用户名是中文的,可能会导致RabbitMQ安装失败 rabbitmq-service.bat remove
rabbitmq-service.bat install
rabbitmq-service.bat start

常见问题

rabbitmq queue 中使用的队列状态是 idle 的原因可能有以下几种  -   队列中没有消息,或者消息的数量很少,没有达到队列的容量限制。
-   队列中没有消费者,或者消费者的数量很少,没有达到队列的并发限制。
-   队列中的消息被设置了 TTL(生存时间),或者被设置了延迟投递,导致消息在一段时间内不可用。
-   队列中的消息被设置了优先级,或者被设置了公平分发,导致消息在一段时间内不被分配给消费者。要解决这个问题,你可以尝试以下方法:-   增加队列中的消息数量,或者减少队列的容量限制,让队列更快地达到饱和状态。
-   增加队列中的消费者数量,或者减少队列的并发限制,让队列更快地分配任务给消费者。
-   减少或取消队列中的消息 TTL 或延迟投递,让消息更快地可用。
-   减少或取消队列中的消息优先级或公平分发,让消息更均匀地分配给消费者。amqp.exceptions.AccessRefused: (0, 0): (403) ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.这个错误表明你的应用程序尝试使用的RabbitMQ的凭证是错误或缺失的你需要检查你的连接工厂或配置文件中是否提供了正确的用户名和密码,以及是否指定了正确的虚拟主机。如果你使用的是guest用户,你需要确保你是从本地主机连接,或者修改RabbitMQ的配置文件允许guest用户从远程主机连接你也可以尝试创建一个新的用户并给予相应的权限例如,下面的命令会创建一个名为RabbitUser的用户,并给予其在/虚拟主机上的完全访问权限:rabbitmqctl add_user RabbitUser YOURPASSWORD
rabbitmqctl set_user_tags RabbitUser administrator
rabbitmqctl set_permissions -p / RabbitUser ".*" ".*" ".*"

日志

查看broker日志文件的方法取决于你的rabbitmq的安装方式和配置。一般来说,你可以在rabbitmq的日志文件中找到broker日志文件的位置 可以使用rabbitmq-diagnostics -q log_location命令来查看节点存储日志文件的位置如果你使用docker运行rabbitmq,你可以使用docker logs命令来查看标准输出中的日志rabbitmq-diagnostics tail_log
查看实时的日志输出。rabbitmq-diagnostics -q log_location
确认你的节点是否真的输出到标准输出流中。使用配置文件来设置日志文件的路径可以在rabbitmq.conf文件中使用log.file这个键来指定日志文件的位置使用环境变量来设置日志文件的路径。在安装rabbitmq时设置RABBITMQ_LOGS这个环境变量的值在rabbitmq-env.conf或rabbitmq-env-conf.bat文件中设置可以使用RABBITMQ_LOGS这个环境变量来指定日志文件的路径 例如,你可以在文件中添加这样一行:RABBITMQ_LOGS=/var/log/rabbitmq/rabbit.log这样就会把日志输出到/var/log/rabbitmq/rabbit.log这个文件中。你也可以使用其他合法的文件路径 Windows可以在文件管理器中找到日志文件的位置,然后用文本编辑器或其他工具打开它。日志文件的位置取决于你安装或启动rabbitmq服务的用户。一般来说,日志文件的路径是C:\Users\username\AppData\Roaming\RabbitMQ\log

poc-yaml-rabbitmq-default-password

| 348 | rabbitmq_default_passwd | Check the rabbitmq default password vuln

RabbitMQ 未授权访问(15672、15692、25672)
RabbitMQ是目前非常热门的一款消息中间件,基于AMQP协议的,可以在发布者和使用者之间交换异步消息。消息可以是人类可读的JSON,简单字符串或可以转换为JSON字符串的值列表。
默认账号密码都是guest

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

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

相关文章

高效底座模型LLaMA

论文标题&#xff1a;LLaMA: Open and Efficient Foundation Language Models 论文链接&#xff1a;https://arxiv.org/pdf/2302.13971.pdf 论文来源&#xff1a;Meta AI 1 概述 大型语言模型&#xff08;Large Languages Models&#xff0c;LLMs&#xff09;通过大规模文本数…

Leetcode 416 分割等和子集

题意理解&#xff1a; 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 即将数组的元素分成两组&#xff0c;每组数值sum(nums)/2 若能分成这样的两组&#xff0c;则返回true,否则返回false 本质上…

EasyExcel简单实例

EasyExcel简单实例 准备工作场景一&#xff1a;读取 Student 表需求1&#xff1a;简单读取需求2&#xff1a;读取到异常信息时不中断需求3&#xff1a;读取所有的sheet工作表需求4&#xff1a;读取指定的sheet工作表需求5&#xff1a;从指定的行开始读取 场景二&#xff1a;写入…

【方差分析原理简介】

文章目录 方差分析&#xff08;Analysis of Variance&#xff0c;简称ANOVA&#xff09;1 方差分析流程2 借助sklean进行基于方差分析的特征筛选3 总结 方差分析&#xff08;Analysis of Variance&#xff0c;简称ANOVA&#xff09; 卡方检验更多的会考虑在衡量两个离散变量是…

大数据系列之:腾讯云服务器性能和价格比较

大数据系列之&#xff1a;腾讯云服务器性能和价格比较 一、磁盘性能和价格比较二、高性能云硬盘三、ssd云硬盘四、极速型ssd云硬盘五、增强型ssd云硬盘六、查看腾讯云服务器价格 一、磁盘性能和价格比较 磁盘名称高性能ssd云硬盘极速型ssd云硬盘增强型ssd云硬盘规格500g 5800 …

Linux 常用进阶指令

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 其他…

有哪些好用的防蓝光护眼台灯?防蓝光护眼灯品牌排行揭晓

对于大多数人来说&#xff0c;护眼灯已经不是什么新鲜概念。为什么要买护眼灯&#xff1f;相信很多人的回答都是“为了孩子”。为了保护儿童视力健康&#xff0c;越来越多家长选择为孩子购买一台护眼灯&#xff0c;也造就了这个相当具有中国特色的庞大市场。很多家长不放心台灯…

世微 AP5191 降压恒流LED车灯 12-80V 9V5A电源驱动方案

AP5191是一款PWM工作模式,高效率、外围简 单、内置功率MOS管&#xff0c;适用于4.5-150V输入的高 精度降压LED恒流驱动芯片。输出功率150W&#xff0c; 电流6A。 AP5191可实现线性调光和PWM调光&#xff0c;线性调 光脚有效电压范围0.55-2.6V. AP5191 工作频率可以通过RT 外部…

ManageEngine推出Log360双层威胁检测系统,强化SOC精准检测!

ManageEngine推出业界首个双层威胁检测系统&#xff0c;加强其安全信息与事件管理&#xff08;SIEM&#xff09;解决方案Log360&#xff0c;以实现精准和准确的威胁检测。Log360的威胁检测、调查和响应&#xff08;TDIR&#xff09;组件Vigil IQ中的新功能为组织的安全运营中心…

基于 Spring Boot 支付宝沙箱支付(Java 版本)

基于 Spring Boot 支付宝沙箱支付&#xff08;Java 版本&#xff09; 步骤第一步&#xff1a;使用支付宝账户登录&#xff0c;打开控制台&#xff0c;进入沙箱环境第二步&#xff1a;配置内网穿透账号第三步&#xff1a;引入支付宝 SDK第四步&#xff1a; 配置 SpringBoot第五步…

P1563 [NOIP2016 提高组] 玩具谜题————C++

目录 [NOIP2016 提高组] 玩具谜题题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示 解题思路Code运行结果 [NOIP2016 提高组] 玩具谜题 题目背景 NOIP2016 提高组 D1T1 题目描述 小南有一套可爱的玩具小人&#xff0c;它…

自动化测试框架pytest系列之强大的fixture功能,为什么fixture强大?一文拆解它的功能参数。(三)

自动化测试框架pytest系列之基础概念介绍(一)-CSDN博客 自动化测试框架pytest系列之21个命令行参数介绍(二)-CSDN博客 接上两篇文章继续 &#xff1a; 3.3 pytest支持的初始化和清除函数 学过unittest的都知道 &#xff0c;unittest有四个函数 &#xff0c;分别是 &#xff…