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。
RabbitMQ学习3----运行和管理RabbitMQ相关推荐
- RabbitMQ学习笔记(3)----RabbitMQ Worker的使用
1. Woker队列结构图 这里表示一个生产者生产了消息发送到队列中,但是确有两个消费者在消费同一个队列中的消息. 2. 创建一个生产者 Producer如下: package com.wangx.r ...
- 官网英文版学习——RabbitMQ学习笔记(二)RabbitMQ安装
一.安装RabbitMQ的依赖Erlang 要进行RabbitMQ学习,首先需要进行RabbitMQ服务的安装,安装我们可以根据官网指导进行http://www.rabbitmq.com/downlo ...
- RabbitMQ学习系列(六): RabbitMQ 高可用集群
前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用.不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/ca ...
- RabbitMq学习笔记004---在CentOS7上安装RabbitMQ
安装过程参考官网: Installing on RPM-based Linux (RHEL, CentOS, Fedora, openSUSE) 首先需要安装erlang,参考:http://fedo ...
- RabbitMQ学习系列(二): RabbitMQ安装与配置
1.安装 Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装RabbitMQ之前要先安装Erlang. erlang:http://www.erlang.org/download. ...
- RabbitMQ学习总结(8)——RabbitMQ后台管理控制台页面属性总结
一. RabbitMq Web rabbitmq-management是RabbitMq web管理端,用的是erlang的cowboy框架进行开发.web页面包括Overview(概述).Conne ...
- RabbitMQ学习(七)——权限管理
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/Anumbrella/article/d ...
- RabbitMQ学习之(二)_Centos6下安装RabbitMQ及管理配置
首先yum方式安装依赖包 yum install ncurses-devel unixODBC unixODBC-devel 安装Erlang语言环境 wget http://erlang.org/d ...
- RabbitMQ学习
RabbitMQ学习 1.概述 用于进程通信的中间件. 优势: 劣势: 1.应用解耦:提高了系统容错性和可维护性 1.系统依赖越多不能保证MQ的高可用 2.异步提速:提升用户体验和系统吞吐量 2.复杂 ...
最新文章
- MySQL 故障集锦
- DG1062信号源输出阻抗测量
- 【集训队互测2015】最大异或和
- 解读腾讯极速高清AR-SR的画质改善机制
- 电控 应用层开发 学习_阿里巴巴如何改善开发人员在 K8s 上的体验?
- ceph auth get_CPB羽梦幻境体验展来了!快来GET限量产品!
- 美股本周第二次熔断:道指大跌近10% 费城半导体指数大跌11%
- 清华AI的华山论剑现已开启,不服就来战!王小川楼天城唐文斌都曾搅动风云...
- 图层重命名快捷键_玩转CAD快捷键(大全),一篇文章就够了
- Loadrunner脚本编程(3)- 检查点,关联等函数
- 怎样填充潘通颜色_怎样判定润滑脂,锂基脂的好坏?
- android qq图片分享到朋友圈,微信分享 QQ分享直接展示视频或图片 分享图片 分享视频...
- oracle的五种元素,五种元素
- exce中让两列数据一一对应_excel表格中两组数据如何对应匹配-EXCEL让两个表格中的两列数据一一对应...
- 免费代码签名证书真的存在吗
- 建站用Windows还是Linux,建站该选择Windows系统还是Linux系统
- DBpedia Introduction
- iOS上应用如何兼容32位系统和64位系统
- flash mx拖拽实例_在Flash MX中制作射击游戏
- .NET调用百度天气api经验
热门文章
- python全栈学习--day12(函数高级应用-带参数的装饰器,多个装饰器装饰一个函数)...
- Python算法——二叉树
- 微信js-sdk使用
- HDU 4857 拓扑排序 优先队列
- presentViewController和pushViewController
- sql修改表字段数据类型
- access如何设置定期报表汇总_报表工具选型对比系列 - 大报表
- 基于Wemos D1的感应开盖垃圾桶
- c51单片机led奇数偶数亮_两STM32单片机串口通讯实验
- 佳博热敏条码打印机修改ip_高赋码热转印打印和热敏打印区别