配置文件
1、配置文件位置
rabbitmq的系统配置文件一般是rabbitmq.conf,可以登录后台查看它的路径,如果你是源码安装,最初这个文件是没有的,需要手动创建;
小弟服务器上地址:C:UsersAdministratorAppDataRoamingRabbitMQ
配置文件:c:/Users/ADMINI~1/AppData/Roaming/RabbitMQ/advanced.config
数据库位置:c:/Users/ADMINI~1/AppData/Roaming/RabbitMQ/db/RABBIT~1
measia【erlang的分布式数据库】
日志文件位置:
C:/Users/ADMINI~1/AppData/Roaming/RabbitMQ/log/RABBIT~1.LOG
C:/Users/ADMINI~1/AppData/Roaming/RabbitMQ/log/rabbit@WIN-BN52SEDCTKA_upgrade.log
2、配置文件
默认(对应的配置文件目录下面,有一个配置文件示例 rabbitmq.config.example)
[].
配置文件继承elang语法,类似json
[ %% this is rabbitmq {rabbit, [ {vm_memory_high_watermark_paging_ratio, 0.4}, {vm_memory_high_watermark, 0.4} ] } ].
注释采用%%;
注意最后结尾一定要加上.,表示结束,否则启动会报错,rabbitmq启动的时候会自动读取这个文件; 下面是一个通用配置 生产上用
[ %% this is rabbitmq setting {rabbit, [ {vm_memory_high_watermark_paging_ratio, 0.5}, {vm_memory_high_watermark, 0.4}, {tcp_listeners, [5672]}, {log_levels, [{connection, error}, {channel, error}]}, {heartbeat, 60}, {frame_max, 131072}, {channel_max, 500}, {disk_free_limit, 50000000} ] } ].
tcp_listerners : 设置rabbimq的监听端口,默认为[5672]。 disk_free_limit : 磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为{mem_relative, 1.0},即与内存相关联1:1,也可定制为多少byte. 【报警机制】 connection的blocked。。。 vm_memory_high_watermark : 设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40%。 比如你的RAM是100G 那么rabbitmq默认是40G, connection的blocked。。。【报警】 让你管道流变小。。。
vm_memory_high_watermark_paging_ratio : 设置内存低水位线消息开始持久化到磁盘,默认50% force_fine_statistics : 该参数属于rabbimq_management,若为true则进行精细化的统计,但会影响性能。 frame_max : 与客户端协商的允许最大包大小,若包太大会拆分成多次发送,默认是131072=128K。 heartbeat : 客户端与服务端心跳间隔,设置为0则关闭心跳,默认是60秒。 log_level : 控制日志的粒度,'none' (不记录日志事件), 'error' (只记录错误), 'warning' (只记录错误和警告), 'info' (记录错误,警告和信息), or 'debug' (记录错误,警告,信息以及调试信息). 默认info,消息太多, 生产一般用error channel_max:与客户端协商的允许最大chanel大小. 设置为0表示无限制.该数值越大,则broker使用的内存就越高,Default: 0 cluster_nodes:当节点第一次启动的时候,设置此选项会导致集群动作自动发生. 元组的第一个元素是其它节点想与其建立集群的节点. 第二个元素是节点的类型,要么是disc,要么是ram,Default: {[], disc} collect_statistics_interval:统计收集时间间隔(毫秒为单位),主要针对于 management plugin.Default: 5000
修改配置文件后,需要重启rabbitmq服务。cmd命令 net stop RabbitMQ && net start RabbitMQ。或者
服务重启后,管理后台http://localhost:15672 需要过一会才能起来。
guest本地访问解除管理后台
%% {tcp_listeners, [{"127.0.0.1", 5672},
%% {"::1", 5672}]},
配置文件设置为公网id,或者局域网ip
rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问。我的是3.6 如果想使用guest/guest通过远程机器访问,需要在rabbitmq配置文件中(找到/rabbitmq_server-3.6.14/ebin下面的rabbit.app文件)中设置 loopback_users为[]。 找到/rabbitmq_server-3.6.14/ebin下面的rabbit.app文件文件完整内容如下(注意后面的半角句号): 找到:loopback_users里的<<”guest”>>删除。 [{rabbit, [{loopback_users, []}]}]. 然后重启 systemctl restart rabbitmq-server.service
PS:另外还有环境变量配置,windows上是windows自带的环境变量。 但是linux上有一个专门的配置文件。
3、参数详解
https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.conf.example
https://blog.csdn.net/Super_RD/article/details/70327712
后台管理操作
管理
用户管理
用户角色
management User can access the management plugin policymaker User can access the management plugin and manage policies and parameters for the vhosts they have access to. monitoring User can access the management plugin and see all connections and channels as well as node-related information. administrator User can do everything monitoring can do, manage users, vhosts and permissions, close other user’s connections, and manage policies and parameters for all vhosts.
(1) 超级管理员(administrator)
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
(2) 监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
(3) 策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
与administrator的对比,administrator能看到这些内容
(4) 普通管理者(management)
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
(5) 其他
无法登陆管理控制台,通常就是普通的生产者和消费者。
用户权限
用户权限指的是用户对exchange,queue的操作权限,包括配置权限,读写权限。配置权限会影响到exchange,queue的声明和删除。读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操作。
Virtual Hosts管理
默认有一个名字叫做 / 的虚拟机。
添加虚拟机
Vhost:虚拟主机对用户的权限进行分离
给用户设置虚拟机权限
Configure regexp:对queue或exchange新建和配置的权限。
Write regexp:对一个queue或exchange写消息的权限。
Read regexp:对一个queue或exchange读消息的权限。
.* 表示对所有queue和exchange有此权限。
^$ 表示对所有的queue和exchage没有此权限。
^(hello.*)$ 表示只有以hello开头的queue或exchage的权限
^(hello.*|team.*)$ 表示有以hello和team开头的queue或exchange的权限。
设置交换机权限
设置一个虚拟机中最大链接数 最大队列数量(不是队列里面消息数量,策略显示的是杜队列里面消息数量)
设置策略
RabbitMQ 有很多可选参数(x-arguments),这些参数由客户端提供,决定是否使用各种可选特性,例如 TTL 和队列长度限制等。
由客户端设定这些参数导致对这些参数的修改需要修改代码、重部署项目、重新创建队列。同时,我们也没法给一组队列或者交换机设定相同的参数。引入 Policies 就是为了解决这些问题。(如果客户端设置了这些参数,客户端的参数会覆盖策略参数)
- name:名字,可以使用任意 ASCII 字符,建议不要使用空格
- pattern:用于匹配队列/交换机的正则表达式
- definition:JSON格式的一组键值对,表示设置的属性,会被注入匹配队列/交换机
- priority:优先级。一个队列/交换机只会有一个生效的 Policy,如果匹配多个 Policy,则优先级数值最大的 Policy 生效
- apply-to:该 Policy 是针对队列,还是交换机,还是同时针对两者
新加的策略会自动的匹配新建或者以建的队列或者交换机
队列管理
交换机
Durability:用来选择需不需要持久化。
Auto delete(自动删除):也就是当分发器关联的所有Queue都删除以后,"分发器"也自动删除。
Internal:设置是否为rabbitmq内部使用, true表示是内部使用, false表示不是内部使用。该功能表示这个exchange不可以被client用来推送消息,仅用来进行exchange和exchange之间的绑定,否则可以推送消息也可以绑定。
Message rate in:消息进入的速率。
Message rate out:消息出去的速率。
交换机绑定到队列
在队列里面也提供了绑定交换机的操作