Consumer Groups
#
描述通过 Consumer Groups,你可以在同一个消费者组中启用任意数量的插件,并在一个或者多个消费者中引用该消费者组。
#
配置示例以下示例展示了如何创建消费者组并将其绑定到消费者中。
创建一个共享相同限流配额的消费者组:
note
您可以这样从 config.yaml
中获取 admin_key
并存入环境变量:
admin_key=$(yq '.deployment.admin.admin_key[0].key' conf/config.yaml | sed 's/"//g')
curl http://127.0.0.1:9180/apisix/admin/consumer_groups/company_a \
-H "X-API-KEY: $admin_key" -X PUT -d '
{
"plugins": {
"limit-count": {
"count": 200,
"time_window": 60,
"rejected_code": 503,
"group": "grp_company_a"
}
}
}'
在消费者组中创建消费者:
curl http://127.0.0.1:9180/apisix/admin/consumers \
-H "X-API-KEY: $admin_key" -X PUT -d '
{
"username": "jack",
"plugins": {
"key-auth": {
"key": "auth-one"
}
},
"group_id": "company_a"
}'
当 APISIX 无法找到 group_id
中定义的消费者组时,创建或者更新消费者的请求将会终止,并返回错误码 404
。
如果消费者已经配置了 plugins
字段,那么消费者组中配置的插件将与之合并。
tip
如下示例,假如你配置了一个消费者组:
Consumer Group
{
"id": "bar",
"plugins": {
"response-rewrite": {
"body": "hello"
}
}
}
并配置了消费者:
Consumer
{
"username": "foo",
"group_id": "bar",
"plugins": {
"basic-auth": {
"username": "foo",
"password": "bar"
},
"response-rewrite": {
"body": "world"
}
}
}
那么 response-rewrite
中的 body
将保留 world
。