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
安装.官方介绍:http://www.rabbitmq.com/download.html.一般产品环境会部署到Linux环境,但做为简单尝试,可以部署到Windows上(这里是部署介绍:http:/ ...
- Linux下RabbitMQ安装、运行与管理
Linux下RabbitMQ安装.运行与管理 安装erlang 安装参考官网 RabbitMQ的安装需要Erlang的基础环境,必须按照RabbitMQ Erlang版本要求进行安装. 关于Erlan ...
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群
Redis总结(五)缓存雪崩和缓存穿透等问题 前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...
- 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群
在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...
- 官网英文版学习——RabbitMQ学习笔记(二)RabbitMQ安装
一.安装RabbitMQ的依赖Erlang 要进行RabbitMQ学习,首先需要进行RabbitMQ服务的安装,安装我们可以根据官网指导进行http://www.rabbitmq.com/downlo ...
- RabbitMQ学习系列(六): RabbitMQ 高可用集群
前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用.不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/ca ...
- RabbitMQ学习(一):RabbitMQ要点简介
转载:http://blog.csdn.net/leixiaotao_java/article/details/78909760#t0 1.什么是RabbitMQ? RabbitMQ是由Erlang语 ...
- RabbitMQ学习笔记(5)----RabbitMQ整合Spring
在Spring AMQP项目中Spring也提供了对RabbitMQ的支持,这里在之前学习SpringBoot的时候也整合过,但是今天这里使用的Spring的xml配置来整个rabbit. Sprin ...
- RabbitMQ学习笔记(八、RabbitMQ总结)
1.什么是消息中间件 Message Queue Middleware,简称MQ,是一种利用高效可靠的消息传递机制进行与平台无关的数据交互的技术. 2.MQ的作用 异步:类似于短信业务,将需要发送的消 ...
- RabbitMQ学习笔记(二、RabbitMQ结构)
目录: RabbitMQ几大组件 交换器类型 RabbitMQ运行流程 RabbitMQ几大组件:(与RabbitMQ第一节中AMQP一样,不细说) 1.生产者.消费者.消息 2.Broker:简单的 ...
随机推荐
- openfire当中的Custom Database Integration Guide的配置
openfire官网配置的链接为:Custom Database Integration Guide 按照上面的步骤一步步配置在xml当中,发现始终不起作用,最后在stackoverflow找到的链接 ...
- Maven 自定义 archetype
最近在公司经常要写一些 storm-job 工程的骨架(archetype)非常相似,为了能够将大家的工程结构固定下来以及节约建工程的成本,所以给组内自定义了maven-archetype,中途遇到了 ...
- XJOI1424解压字符串
解压字符串 给你一个字符串S,S是已经被加密过的字符串.现在要求你把字符串S还原.字符串S可能会出现这样的格式:k(q),它表示字符串q重复了k次,其中q是0个或多个字符,而k是一个数字,范围是0至9 ...
- 使用composer下拉组件失败,出现killed解决办法
做项目时下载composer组件,出现killed提示,如图 一般是因为内存太小,将虚拟机内存设置大一点即可,在虚拟机关机的时候设置 下载成功
- 在centOS7.2安装配置zabbix监控
zabbix由两部分组成,zabbix-server与可选的zabbix-agent.zabbix-server可以通过SNMP,ZABBIX-AGENT,PING,端口监视等方法提供对远程服务器/网 ...
- 4.Redis常用命令:List
在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在,Redis将为该键创建 ...
- Eclipse插件ObjectAid(UML画图工具)
原链接:https://my.oschina.net/keyven/blog/856594 最近想找一个Eclipse上的插件,可以方便的把java代码转换为UML图,但是由于我用的是Eclipse ...
- UWP: 掌握编译型绑定 x:Bind
在 UWP 开发中,我们在进行数据绑定时,除了可以使用传统的绑定 Binding,也可以使用全新的 x:Bind,由于后者是在程序编译时进行初始化操作(不同于 Binding,它是在运行时创建.初始化 ...
- Linux之环境变量
1. 变量的显示与设置 显示变量 echo \(PATH</font></code><br/> 取消变量 <code><font color=&q ...
- 解决Mybatis连接Sql server 出现 Cannot load JDBC driver class 'com.mysql.jdbc.Driver '的问题
tomcat启动的时候没有错误,但是进行数据库操作就会有错误. 在网上找了很久 好不容易找到解决方法 转自 http://blog.csdn.net/ro_bot/article/details/5 ...