每个用户资源限制
概述
类似于 每个虚拟主机资源限制,可以限制特定用户可以打开的连接和通道数量。
在无法详细信任和监控应用程序的环境中,例如将 RabbitMQ 集群作为服务提供时,可以使用这些限制作为防护措施。
可以使用 rabbitmqctl set_user_limits
或 HTTP 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_limits
或 HTTP 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