RabbitMQ学习3----运行和管理RabbitMQ

1.服务为管理

  Erlang天生就是为了让应用程序无需知道对方是否存在同一台机器上即可互相通信。

  Erlang节点:Erlang虚拟机的每个实例。多个Erlang应用程序可以运行在同一个节点之上。节点之间可以进行本地通信(不管他们是运行在同一台服务器之上)。举例说明:一个运行在节点A上应用程序可以调用节点B上应用程序的方法,就好像调用本地函数一样。如果应用程序由于某些原因奔溃,Erlang节点会自动尝试重启应用程序。

1.1启动节点

  在RabbitMQ的安装目录下运行./rabbitmq-server。也可以通过增加-detached参数的方式启动RabbitMQ节点,以守护程序的方式在后台运行:./rabbitmq-server  -detached.

1.2停止节点

  在RabbitMQ的安装目录下运行:./rabbitmqctl stop时,rabbitmqctl会和本地节点通信并指示其干净的关闭。也可以指定关闭不同的节点,包括远程节点。只需要传入-n rabbit@[hostname]选项即可。这时整个Rabbitmq节点包括Erlang都关闭了。

  停止RabbitMQ只需要运行:./rabbitmactl stop_app即可。

1.3RabbitMQ的配置文件

[{mnesia,[{dump_log_write_threshold,1000}]},{rabbit,[{vm_memory_high_watermark,0.4}]}   
]

  rabbitmq的配置文件是一个包含了嵌套哈希表表的数组。通过外部配置数组,每个Erlang应用程序会有自己的哈希表来配置选项。

  注意:RabbitMQ中的每个队列、交换器和绑定的元数据都是保存到Mnesia的。Mnesia是内建在Erlang的非SQL数据库。Mnesia通过将RabbitMQ元数据写入一个仅限追加的日志文件以确保其完整性。然后在定期将日志内容转储到真实的Mnesia数据库文件中。

2.请求许可

  可以为连接到RabbitMQ上的用户设置不同级别的权限(读、写和配置).RabbitMQ权限的好处是在于单个用户可以跨越多个Vhost进行授权。

2.1管理用户

  在RabbitMQ中,用户是访问控制的基本单元。针对一到多个vhost,其可以被赋予不同级别的访问权限,并使用标准的用户名/密码来认证用户。对用户的增加、删除以及列出列表非常简单。这些操作都是通过rabbitmqctl来完成。

  创建用户的命令如下:

./rabbitmqctl add_user username password

  删除用户的命令如下:

./rabbitmqctl delete_user username

  当删除用户的时候,任何引用该用户的访问控制条目都会从rabbit权限数据库中自动删除。

  查看所有用户的命令如下

./rabbitmqctl list_users

  修改已经存在的用户的密码的命令如下:

./rabbitmqctl change_password username newpassword

2.2Rabbit权限系统

  如下图是AMQP操作到Rabbitmq权限的映射关系

 

  每一条访问控制条目由以下四部分组成:

  • 被授予访问权限的用户
  • 权限应用的vhost
  • 需要授予的读/写/配置权限的组合
  • 权限的范围

  谨记:访问控制条目是无法跨越vhost的。

  授予权限的命令如下所示:

./rabbitmqctl set_permissions -p vhostname username ".*" ".*" ".*"
  •  -p vhostname:告诉了set-permissions条目应该应用到哪个vhost
  • username:指定了被授予权限的用户
  • ".*"  ".*"  ".*":这是被授予的权限。这些值分别映射到配置、写和读。

  ".*"意味着匹配任何队列或者交换器的名字。

  "checks-.*":只匹配名字以"checks-"开头的队列和交换机。

  "":不匹配任何队列和交换器。

  如下权限设置:

./rabbitmqctl set_permissions -p vhostname username " "  "checks-.*"  ".*"

  可以使用Rabbitmqctl的list_permisions命令来验证权限是否正确赋予。

./rabbitmqctl clear_permissions -p vhostname username

  可以使用Rabbitmqctl的clear_premissions命令来移除一个用户在任何vhost上的权限。如下所示:

./rabbitmqctl clear_permissions -p vhostname username

  值得注意的是,clear_permissions命令会移除用户在指定vhost上的所有权限。如果你想修改用户现存权限,则只需要设置新的权限值并执行set_permissions即可。

  如果你想查看用户在RabbitMQ服务器上所有vhost上的权限,可以使用list_user_permissions即可。

./rabbitmqctl list_user_permissions username

3.检查

3.1查看数据统计

  列出队列和消息数目

./rabbitmqctl list_queues [-p <VHostname>] [<QueueInfoItem>]

  QueueInfoItem主要包含以下选项:

  例如:

./rabbitmqctl list_queues name durable auto_delete consumers memory

  查看交换器和绑定.查看交换器的命令如下:

./rabbitmqctl list_exchanges

 

  查看绑定的命令如下:

./rabbitmqctl list_bindings

  该命令不接受处-p以外的参数。

通过AMQP实时访问日志

  当使用rabbitmqctl列出交换器列表时看到了其中一个叫做amq.rabbitmq.log的topic交换器。RabbitMQ把日志信息发布到该交换器上,并以严重级别作为路由键---error、warning和info.可以通过创建一个消费者来监听日志并作出相应的反应。

4.修复RabbitMQ:疑惑解答

  Erlang节点通过交换作为秘密令牌的Erlang cookie以获得认证。由于你已连接到远程节点后就能执行命令,因此有必要确保该节点是可信的。Erlang将令牌存储在名为.erlang.cookie的文件。为了能让rabbitmqctl能够连接RabbitMQ节点,因此需要共享相同的cookie。如果运行RabbitMQ和执行rabbitmqctl命令的是同一个用户,那么你不会有任何问题。但是在产品环境中,你可能会想要创建rabbitmq用户,并以该用户的身份运行服务器。这意味着你必须和rabbitmq用户共享cookie,或者切换到rabbitmq才能成功执行rabbitmqctl。

 

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

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

相关文章

各代移动网络性能

摘自《中国元宇宙白皮书》 下载整书完整版https://www.aliyundrive.com/s/gXQvRLM22kD

EFCore高级Saas系统下单DbContext如何支持不同数据库的迁移

前言随着系统的不断开发和迭代默认的efcore功能十分强大&#xff0c;但是随着Saas系统的引进efcore基于表字段的多租户模式已经非常完美了&#xff0c;但是基于数据库的多租户也是可以用的&#xff0c;但是也存在缺点&#xff0c;缺点就是没有办法支持不同数据库&#xff0c;mi…

51. Python 数据处理(2)

1.Python 修改excel文件import xlrd import xlutils.copy excelr xlrd.open_workbook("hello.xlsx") excelw xlutils.copy.copy(excelr) sheet1 excelw.get_sheet(0) sheet1.write(3, 5, "xlutils.copy test test") excelw.save("hello.xlsx"…

人工智能十大流行算法

导读&#xff1a;本文为有志于成为数据科学家或对此感兴趣的读者们介绍最流行的机器学习算法。 作者&#xff1a;Fahim ul Haq 译者&#xff1a;刘志勇&#xff0c;策划&#xff1a;赵钰莹 来源&#xff1a;InfoQ&#xff08;ID&#xff1a;infoqchina&#xff09; 机器学习是…

Win7+Win10双系统安装全攻略

安装双系统,不仅能给你非凡的体验,还可以满足工作中因系统版本,兼容性,处理器等原因带来的不便。本文讲解Win7+Win10双系统安装全攻略,亲测可用。 1. 硬盘分区 本文讲解利用固态硬盘+机械硬盘的分区方式。 固态硬盘:为了绝对提高系统运行的速度,将固态硬盘作为双系统的…

聊聊研发团队中的“人”

大家好&#xff0c;我是Z哥。汉字博大精深&#xff0c;很多时候我们可以通过拆字来更形象地理解一个词的含义。比如“团队”这个词的两个字"团"和“队”单独看也都是表示一种由多人组成的组织。再做一下拆字就是“口”“才”和“耳”“人”。前者表示一个人才如果没有…

[转]【分布式系统】唯一ID生成策略总结

文章目录 全局唯一id介绍 全局唯一id特点:常见全局唯一id生成策略 1、数据库自增长序列或字段生成id 2、UUID 3、Redis生成ID 4、zookeeper生成ID 5、Twitter的snowflake算法全局唯一id介绍 系统唯一id是我们在设计阶段常常遇到的问题。在复杂的分布式系统中&#…

超全的开源Winform UI库,满足你的一切桌面开发需求!

本文有dotnet9站长整理 网址&#xff1a;https://dotnet9.com/本站曾介绍过一款Winform开源控件库HZHControls&#xff0c;Winform在大家心中的地位还是挺高的&#xff0c;今天小编再分享一款新鲜出炉的 Winform UI库——SunnyUI&#xff0c;一起跟 Dotnet9 往下看吧。项目名称…

告别国外 IDE,阿里 蚂蚁自研 IDE 研发框架 OpenSumi 正式开源

经历近 3 年时间&#xff0c;在阿里集团及蚂蚁集团共建小组的努力下&#xff0c;OpenSumi 作为国内首个强定制性、高性能&#xff0c;兼容 VS Code 插件体系的 IDE 研发框架&#xff0c;今天正式对外开源。 一 OpenSumi 是什么&#xff1f; OpenSumi 是一款面向垂直领域&#…

window-memcache技术随笔

memcached.exe软件放置到非中文,非空格的目录,把MSVCR71.DLL文件放在memcached.exe同目录下启动,控制面板中打开window功能-Telnet客户端memcache服务方法一:管理员身份打开黑窗口 d:(mem的所在盘)cd memmemcached.exe -p 11211方法二: 安装为Windows的系统服务memcached.exe -…

将不确定变为确定~老赵写的CodeTimer是代码性能测试的利器

首先&#xff0c;非常感谢赵老大的CodeTimer&#xff0c;它让我们更好的了解到代码执行的性能&#xff0c;从而可以让我们从性能的角度来考虑问题&#xff0c;有些东西可能我们认为是这样的&#xff0c;但经理测试并非如何&#xff0c;这正应了我之前的那名话&#xff1a;“机器…

聊聊 C++ 中的几种智能指针(下)

一&#xff1a;背景 上一篇我们聊到了C 的 auto_ptr &#xff0c;有朋友说已经在 C 17 中被弃用了&#xff0c;感谢朋友提醒&#xff0c;今天我们来聊一下 C 11 中引入的几个智能指针。unique_ptrshared_ptrweak_ptr看看它们都怎么玩。二&#xff1a;三大智能指针详解 1. uniq…

iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案”

iOS回顾笔记&#xff08; 02 &#xff09; -- 由九宫格布局引发的一系列“惨案” 前言&#xff08;扯几句淡先&#xff09; 回顾到学习UI过程中的九宫格布局时&#xff0c;发现当时学的东西真是不少。 这个阶段最大的特点就是&#xff1a;知识点繁多且琐碎。 我们的目标就是要将…

【GlobalMapper精品教程】007:如何加载谷歌卫星影像?

“Global Mapper支持所有OGC标准数据源类型,例如用于流式栅格地图的WMS / WMTS,用于矢量数据集的WFS和用于为指定区域下载单个数据文件的WCS。预先切片的图像和地形数据集也可以使用OSM(OpenStreetMaps)、TMS(Tiled Map Service)和Google Maps瓦片架构支持。您只需要选择适当…

Mysql清空表(truncate)与删除表中数据(delete)的区别

2019独角兽企业重金招聘Python工程师标准>>> 为某基于wordpress搭建的博客长久未除草&#xff0c;某天升级的时候发现已经被插入了几万条垃圾留言&#xff0c;如果一条条删除那可真是累人的活。遂考虑直接进入mysql直接清空表或者删除表中数据。 本文记录一下这2种操…

[转]云原生到底是什么?

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#x1f61c; &#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525; &#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4ac;格言&#xf…

膛目结舌的代码技巧!一看就是冷暴力~~~~

你见过哪些令你膛目结舌的代码技巧&#xff1f; 代码世界有很多令人大呼小叫的技巧&#xff01;有的代码像魔术师一样巧妙地隐藏了自己&#xff0c;有的像魔法师一样让你眼花缭乱&#xff0c;还有的像瑜伽大师一样灵活自如。它们让我们惊叹不已&#xff0c;让我们觉得自己仿佛置…

联合线程

联合线程实际上就是把多线程又联合成了一个线程&#xff0c;但这里还是要比单线程灵活很多&#xff0c;比如说&#xff0c;我可以让一个线程到运行到某一个条件再联合其他线程。当前线程与其他线程联合在一起&#xff0c;又一种让出cpu&#xff0c;而且直到别个线程运行完&…

Kafka学习征途:不再依赖ZK的KRaft

【Kafka】| 总结/Edison Zhou1新的KRaft架构在Kafka 2.8之前&#xff0c;Kafka重度依赖于Zookeeper集群做元数据管理和集群的高可用&#xff08;即所谓的共识服务&#xff09;。在Kafka 2.8之后&#xff0c;引入了基于Raft协议的KRaft模式&#xff0c;支持取消对Zookeeper的依赖…

探索java世界中的日志奥秘

java日志简单介绍 对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪&#xff0c;基于日志的业务逻辑统计分析等都离不日志。JAVA领域存在多种日志框架&#xff0c;目前常用的日志框架包括Log4j&#xff0c;Log4j 2&#xff0c;Commons Logging&#xff0c;Slf4j&…