跳至主要内容
版本:4.0

每个用户资源限制

概述

类似于 每个虚拟主机资源限制,可以限制特定用户可以打开的连接和通道数量。

在无法详细信任和监控应用程序的环境中,例如将 RabbitMQ 集群作为服务提供时,可以使用这些限制作为防护措施。

可以使用 rabbitmqctl set_user_limitsHTTP API 配置这些限制。

最大连接数

要限制用户可以打开的连接数,请将 max-connections 限制设置为正整数

rabbitmqctl set_user_limits user1 '{"max-connections": 10}'

要通过 HTTP API 设置限制,请使用以下端点

PUT /api/user-limits/{username}/{limit}

以及类似这样的请求正文

{"value": 20}

以下是一个使用 curl 的示例

# using the HTTP API
curl -v -u guest:guest -X PUT https://127.0.0.1:15672/api/user-limits/user1/max-connections \
-H "content-type: application/json" \
-d @- <<EOF
{
"value": 20
}
EOF

最大通道数

要限制用户可以打开的总通道数,请将 max-channels 限制设置为正整数

# using CLI tools
rabbitmqctl set_user_limits guest '{"max-connections": 10, "max-channels": 20}'

要通过 HTTP API 设置限制,请使用以下端点

PUT /api/user-limits/{username}/{limit}

以及类似这样的请求正文

{"value": 20}

以下是一个使用 curl 为用户 user1 设置限制的示例

# using the HTTP API
curl -v -u guest:guest -X PUT https://127.0.0.1:15672/api/user-limits/user1/max-channels \
-H "content-type: application/json" \
-d @- <<EOF
{
"value": 20
}
EOF

该限制适用于用户打开的所有连接上的总通道数。因此,它必须等于或大于上述最大连接限制。

清除用户限制

要清除用户的全部限制,请使用 rabbitmqctl clear_user_limitsHTTP API

以下是一些清除用户 user1 所有限制的示例

# clears the maximum number of connections limit
rabbitmqctl clear_user_limits user1 'max-connections'

# clears the maximum number of channels limit
rabbitmqctl clear_user_limits user1 'max-channels'

# clears all limits in a single operation
rabbitmqctl clear_user_limits user1 all

要通过 HTTP API 清除限制,请使用以下端点

DELETE /api/user-limits/{username}/{limit}

且不带请求正文。

以下是一个使用 curl 清除用户 user1 所有限制的示例

# using the HTTP API
curl -v -u guest:guest -X DELETE https://127.0.0.1:15672/api/user-limits/user1/max-channels

curl -v -u guest:guest -X DELETE https://127.0.0.1:15672/api/user-limits/user1/max-connections
© 2024 RabbitMQ. All rights reserved.