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的更多相关文章

  1. RabbitMQ介绍3 - 运行和管理RabbitMQ

    安装.官方介绍:http://www.rabbitmq.com/download.html.一般产品环境会部署到Linux环境,但做为简单尝试,可以部署到Windows上(这里是部署介绍:http:/ ...

  2. Linux下RabbitMQ安装、运行与管理

    Linux下RabbitMQ安装.运行与管理 安装erlang 安装参考官网 RabbitMQ的安装需要Erlang的基础环境,必须按照RabbitMQ Erlang版本要求进行安装. 关于Erlan ...

  3. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  4. 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群

    在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...

  5. 官网英文版学习——RabbitMQ学习笔记(二)RabbitMQ安装

    一.安装RabbitMQ的依赖Erlang 要进行RabbitMQ学习,首先需要进行RabbitMQ服务的安装,安装我们可以根据官网指导进行http://www.rabbitmq.com/downlo ...

  6. RabbitMQ学习系列(六): RabbitMQ 高可用集群

    前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用.不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/ca ...

  7. RabbitMQ学习(一):RabbitMQ要点简介

    转载:http://blog.csdn.net/leixiaotao_java/article/details/78909760#t0 1.什么是RabbitMQ? RabbitMQ是由Erlang语 ...

  8. RabbitMQ学习笔记(5)----RabbitMQ整合Spring

    在Spring AMQP项目中Spring也提供了对RabbitMQ的支持,这里在之前学习SpringBoot的时候也整合过,但是今天这里使用的Spring的xml配置来整个rabbit. Sprin ...

  9. RabbitMQ学习笔记(八、RabbitMQ总结)

    1.什么是消息中间件 Message Queue Middleware,简称MQ,是一种利用高效可靠的消息传递机制进行与平台无关的数据交互的技术. 2.MQ的作用 异步:类似于短信业务,将需要发送的消 ...

  10. RabbitMQ学习笔记(二、RabbitMQ结构)

    目录: RabbitMQ几大组件 交换器类型 RabbitMQ运行流程 RabbitMQ几大组件:(与RabbitMQ第一节中AMQP一样,不细说) 1.生产者.消费者.消息 2.Broker:简单的 ...

随机推荐

  1. Mesos+Zookeeper+Marathon+Docker分布式集群管理最佳实践

    参考赵班长的unixhot以及马亮blog 笔者QQ:572891887 Linux架构交流群:471443208 1.1Mesos简介 Mesos是Apache下的开源分布式资源管理框架,它被称为分 ...

  2. iOS中书写代码规范35条小建议

    1.精简代码, 返回最后一句的值,这个方法有一个优点,所有的变量都在代码块中,也就是只在代码块的区域中有效,这意味着可以减少对其他作用域的命名污染.但缺点是可读性比较差 NSURL *url = ({ ...

  3. Hibernate原理、配置及单表操作

    一.Hibernate的配置文档 其中:hbm2ddl.auto中的create表示每次修改数据的时候都会删除原有的表,生成新的表结构,原有的数据不再存在:update表示在原有数据的基础上进行更新, ...

  4. GEF开发eclipse插件,多页编辑器实现delete功能

    基于GEF开发,多页签编辑器实现 有两种方案: 方案一 继承FormEditor或MultiPageEditorPart,在其中嵌入自定义的继承自GraphicalEditor的子类的编辑器(作为一个 ...

  5. [Linux] PHP程序员玩转Linux系列-nginx初学者引导

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  6. 在应用程序中使用Xml文件

    用于操作Xml的文档主要有XmlNode.XmlDocument.XmlComment.XmlElement.XmlAttribute.XmlText.XmlNodeList 下面用一段代码来具体说明 ...

  7. 1163: 零起点学算法70——Yes,I can!

    1163: 零起点学算法70--Yes,I can! Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: ...

  8. 05 Training versus Testing

    train:A根据给定训练集D在H中选出g,使得Ein(g)约等于0: test:g在整个输入空间X上的表现要约等于在训练集D上的表现,使得Eout(g)约等于Ein(g). 如果|H|小,更易保证t ...

  9. CHM文件无法打开或无法搜索

    在确保CHM文件本身正常的前提下,检查c:\\windows\hh.exe和C:\\windows\system32\itss.dll和hhctrl.ocx三个文件是否存在. 如不存在,只需要从其他机 ...

  10. vim粘贴代码问题

    vim粘贴代码问题 vim 在使用xshell进行vim操作的时候,经常会直接粘贴一些外部的代码,然后粘贴上之后会出现逐行缩进的情况,之前一直没有去找为啥,并且逐行的给他弄回去. 转自:https:/ ...