针对用户管理,第一种很方面的就是通过web管理界面进行增删改用户以及权限 的管理,第二种就是命令行方式
下面是windows方式,如果使用linux方式,只需将相关bat命令替换为sh即可
rabbitmqctl是管理rabbitmq的命令
rabbitmqctl.bat add_user rabbitmq rq1
增加一个rabbitmq用户,密码为rq1
rabbitmqctl.bat set_user_tags rabbitmq administrator
设置其为超级管理员
rabbitmqctl.bat set_permissions -p / rabbitmq ".*" ".*" ".*"
后面三个分别代表配置权限、写权限、读权限
删除用户:rabbitmqctl delete_user Username
修改用户密码:rabbitmqctl change_password username newpassword
用户角色可分为五类
Administrator | Monitoring | Policymaker | Management | None
可登录管理控制台(启用management plugin的情况),可查看所有信息,并且可对用户、策略等进行操作
可查看rabbitmq节点的相关信息(进程数,内存使用、磁盘使用等),但是不可管理用户
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
无法登陆管理控制台,通常就是普通的生产者和消费者。
rabbitmqctl stop,会将RabbitMQ应用程序和erlang节点同时关闭,如果在同一个节点运行RabbitMQ和其他erlang应用程序,而只想停止RabbitMQ,则使用rabbitmqctl stop_app
列出队列与消息数目
rabbitmqctl list_queues
更多队列消息:
rabbitmqctl list_queues name messages consumers memory
队列属性
rabbitmqctl list_queues name durable auto_delete
查看交换器
rabbitmqctl list_exchanges
交换器属性
rabbitmqctl list_exchanges name type durable auto_delete
绑定信息
rabbitmqctl list_bindings
1.在overview视图下方你可以下载配置信息,格式为json,还可以针对json配置文件作修改上传,刷新页面即可看到更改的配置
2.另一种是CLI管理方式
HTTP API
Command Line
HTTP API: 访问 http://主机名/IP:15672/api/ 这里讲解很清楚
另一种是Command Line方式:
centos6.5下自带python2.6,如需升级可查看http://www.cnblogs.com/dudu/p/4294238.html
假设已经安装python,通过一下命令即可安装rabbitmqadmin管理脚本,默认是安装到你的当前目录,为了方便管理将他移到rabbitmq相关命令的目录
wget http://主机名/IP:15672/cli/
mv /rabbitmqadmin /usr/rabbitmq/sbin
chmod +x rabbitmqadmin
下面即可使用rabbitmqadmin,输出的内容是格式化之后的
一旦创建了队列和交换机就不能修改,如要修改需重新创建
持久化(Durability )与exchange是相同的,未持久化的队列会在服务器重启的时候销毁;
自动删除(Auto delete):当没有消费者连接该队列时自动销毁;
私有性(Exclusive ):使队列称为私有队列,只有当前应用程序可用,只有一个消费者;
Message TTL:当一个消息推送至该队列时存在的时间,单位ms;
Auto expire: 在队列自动删除之前可以保留多长时间;
Max length :一个队列可以容纳的已准备消息的数量;
此状态的消息存在于队列中待处理。
此状态的消息表示已经在处理未确认
当Consumer接收到消息、处理任务完成之后,会发送带有这个消息标示符的ack,来告诉server这个消息接收到并处理完成。RabbitMQ会一直等到处理某个消息的Consumer的链接失去之后,才确定这个消息没有正确处理,从而RabbitMQ重发这个消息。
声明一个队列时,服务会将其绑定到默认的exchange上,而默认的exchange名称是空。而对于持久化的队列和持久化的交换机,如果删除其中一个,与其绑定的也会删除
发布者把消息发送给exchange,exchange根据其类型,决定将消息处理到哪个队列,例如通过广播的方式去处理消息,所有的队列都会收到相应的消息
可用于消费者集群,如果一个队列积压太多的消息,如何让消费者均匀的去承担,是它所做的事情。
例如,可以通过控制一个队列单次消费的数量
void BasicQos(uint prefetchSize, ushort prefetchCount, bool global),
假如是一个生产者,3个消费者,发送九条消息,会通过轮询的方式去发送,每个消费者均收到三条消息,并且是按顺序去发送