RabbitMQ配置

Posted wudequn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RabbitMQ配置相关的知识,希望对你有一定的参考价值。

配置文件

1、配置文件位置

rabbitmq的系统配置文件一般是rabbitmq.conf,可以登录后台查看它的路径,如果你是源码安装,最初这个文件是没有的,需要手动创建;

技术图片

技术图片

小弟服务器上地址:C:\\Users\\Administrator\\AppData\\Roaming\\RabbitMQ

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.

vm_memory_high_watermark : 设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40%。

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‘ (记录错误,警告,信息以及调试信息).

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 
View Code

 

 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:消息出去的速率。

交换机绑定到队列

技术图片

 

在队列里面也提供了绑定交换机的操作

技术图片

 

以上是关于RabbitMQ配置的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

RabbitMQ---延迟队列,整合springboot

RabbitMQ 教程远程数据交互

带你从头进行RabbitMQ安装集群搭建镜像队列配置和代码验证

RabbitMQ:延迟队列