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:简单的 ...
随机推荐
- 使用github+hexo搭建博客笔记
听说github上可以搭博客,而且不用自己提供空间和维护,哈哈哈 作为一名程序猿,github搭博客对我有种神奇的吸引力,赶紧动手试一试 关于如何使用hexo搭建博客网上好的教程多如牛毛,而且这篇博客 ...
- 记录一次坑爹的VM连接主机的路程
因为之前电脑配置过虚拟机连接主机的过程,所以没有太在意,换电脑了之后配了两天结果没有配置成功; 首先配置静态ip: 1,编辑第一个文件/etc/sysconfig/network-scripts/if ...
- 菜鸟学IT之IP基础
IT菜鸟,以后研究的方向是云计算,从基础的开始,这是第一篇博文.有不对的地方希望大家指正.IP是网络知识的基础,今天就开始学习IP. IP地址格式:IP地址就是"网络地址+主机地址" ...
- Hibernate(四)之对象状态及一级缓存
一.Hibernate中的对象状态 1.1.瞬时态(临时态) 没有与Hibernate产生关联 与数据库中的记录没有产生关联(有关联就是与数据库中表的id相对应) 获得:一般都只直接创建(new) 瞬 ...
- TableView cell自适应高度-----xib
1.通过xib创建一个cell,将label进行上左下右,进行适配, self.automaticallyAdjustsScrollViewInsets = NO; self.edgesForExte ...
- java 基础知识七 装箱和拆箱
java 基础知识七 装箱和拆箱 数据类型可分为两大种,基本数据类型(值类型)和类类型(引用数据类型) 装箱:把基本类型用他们相对应的引用类型包装起来,使他们可以具有对象的特质 基本数据类型 ...
- JS滚动加载
var one = true;//设置一个全局变量 $(window).scroll(function () { var hight = document.body.scrollHeight - do ...
- ValueStack
1.把list集合压入栈顶 /** * * 查找所有的用户 * @return */ public String findAll() { List<User> allUser = user ...
- Cookie中文乱码问题
页面一登录,页面二保存用户信息,放入Cookies里. 但是Cookies放入中文会引起编码问题,如报错“Control character in cookie value, consider BAS ...
- Java多线程学习笔记(一)——Thread类中方法介绍
currentThread():返回代码正在被哪个线程调用. public class CurrentThreadWay { public static void main(String[] args ...