RabbitMqs的安装就不想在说了,在说就说出茧子来了。就从自己亲身体验说起吧!
切记每天用完RabbitMq之后把服务关掉第二天在用的时候再开
5672和15672的区别:
5672是RabbitMq端口,15672是RabbitMq Managment网页版端口
(二)管理方式:
管理RabbitMQ有4中方式:
RabbitMQ Management(Web UI)
rabbitmqctl
command line tool(curl)(不说了,有时间在研究)
rabbitmqadmin(不说了,有时间在研究)
一台物理机器上可以有多个erlang节点(实例),每个节点可以运行多个应用程序,其中重要的应用程序有RabbitMQ、Erlang语言自带的Mnesia数据库,以及RabbitMQ相关的插件(如RabbitMQ Management)。可以将Erlang节点类比于java的JVM。
(1)rabbitmqctl命令方式:
RabbitMQ Management 是一个用于操作RabbitMQ的管理界面,可以操作很多常用的操作,但是并不支持所有的操作,命令行支持所有功能。
在RabbitMq 目录sbin下cmd后输入相应命令:
rabbitmqctl命令行: 命令行比web管理界面更强大,web界面的命令只是rabbitmqctl命令的一个子集
应用程序和集群管理(Application and Cluster Management)、
集群配置(Cluster management)、
用户管理(User management)、
访问控制(Access Control)、
参数管理(Parameter Management)、
政策管理(Policy Management)、
服务器状态(Server Status)
Miscellaneous
rabbitmqctl命令行:
rabbitmq-server // 同时启动erlang节点和应用程序
// 查看rabrabbitmqctl所支持的命令
rabrabbitmqctl
//查看所有RabbitMq命令
rabbitmqctl list_help
// 查看状态
rabbitmqctl status
//停止erlang node,同时关闭erlang节点和应用程序
rabbitmqctl stop
// 停止RabbitMQ服务,仅关闭erlang节点上的rabbit应用程序
rabbitmqctl stop_app
// 启动RabbitMQ服务
rabbitmqctl start_app
// 格式化rabbitmq node(在集群中需要满足一定的条件才能关闭)
//首先运行rabbitmqctl stop_app 服务停了才能reset
rabbitmqctl reset
// 强制格式化rabbitmq node
rabbitmqctl force_reset
// 清除某个队列的所有消息
rabbitmqctl purge_queue <name>
// 添加用户
rabbitmqctl add_user <username> <password>
// 设置权限
rabbitmqctl set_permissions -p / <username> ".*" ".*" ".*"
// 列举权限
rabbitmqctl list_permissions -p <vhost>
// 列举用户的所有权限
rabbitmqctl list_user_permissions <username>
// 清除权限
rabbitmqctl clear_permissions -p <vhost> <username>
// 认证用户
rabbitmqctl authenticate_user <username> <password>
// 修改密码
rabbitmqctl change_password <username> <password>
// 列举用户
rabbitmqctl list_users
// 删除用户(删除用户时也会把用户相关的权限都删除)
rabbitmqctl delete_user <username>
// 设置tag, tag可以为none最小权限角色,management 管理员角色,policymaker决策者,monitoring 监控,administrator 超级管理员
rabbitmqctl set_user_tags <username> <tag>
// 添加虚拟主机
rabbitmqctl add_vhost <name>
// 删除虚拟主机
rabbitmqctl delete_vhost <name>
// 查看所有虚拟主机
rabbitmqctl list_vhost [<vhostinfoitem> ...]
// 列举默认虚拟机上的所有队列
rabbitmqctl list_queues
// 列出指定虚拟机上的队列
rabbitmqctl list_queues -p <vhost>
// 列举队列,包含队列名称、消息数目、消费者数目、内存使用情况、是否持久化、是否自动删除
rabbitmqctl list_queues name messages counsumers memory durable auto_delete
// 查看交换机
rabbitmqctl list_exchanges [name] [type] [durable] [auto_delete]
// 列举所有绑定
rabbitmqctl list_bindings [-p <vhost>]
注意清除某个东西时操作步骤:
(2)RabbitMq Managment界面管理:
如果输入http://localhost:15672/ 页面出不来则可能是服务没开,在sbin下输入命令开启服务
创建完之后页面符号解释:
1:D和AD
声明(创建)队列 b:durable是否持久化, 队列的声明默认是存放到内存中的,如果true :rabbitmq重启队列不会丢失但是里面消息没了 false:队列和消息全没了
//b1:exclusive:是否排外的,有两个作用,一:当连接关闭时connection.close()该队列是否会自动删除
//b2:autoDelete:是否自动删除,当最后一个消费者断开连接之后队列是否自动被删除,当consumers = 0时队列就会自动删除
channel.queueDeclare(QUEUE_NAME,true,false,false,null);
第一个boolean参数 durable 代表队列是否持久化。图中D 来源于 durable
上面图中出现了D,也可能 D AD 同时出现在里面,代表b2:autoDelete 第二个boolean参数为true的时候
2:如何查看创建几个消费者
3:如何查看自己创建的交换机
4:如何查看queue中消息消费折线图
5:prefetch 1 指的是 channel.basicQos(1)