Consumer Groups

描述

通过 Consumer Groups,你可以在同一个消费者组中启用任意数量的插件,并在一个或者多个消费者中引用该消费者组。

配置示例

以下示例展示了如何创建消费者组并将其绑定到消费者中。

  1. curl http://127.0.0.1:9180/apisix/admin/consumer_groups/company_a \
  2. -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  3. {
  4. "plugins": {
  5. "limit-count": {
  6. "count": 200,
  7. "time_window": 60,
  8. "rejected_code": 503,
  9. "group": "$consumer_group_id"
  10. }
  11. }
  12. }'
  1. curl http://127.0.0.1:9180/apisix/admin/consumers \
  2. -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  3. {
  4. "username": "jack",
  5. "plugins": {
  6. "key-auth": {
  7. "key": "auth-one"
  8. }
  9. },
  10. "group_id": "company_a"
  11. }'

当 APISIX 无法找到 group_id 中定义的消费者组时,创建或者更新消费者的请求将会终止,并返回错误码 404

如果消费者已经配置了 plugins 字段,那么消费者组中配置的插件将与之合并。

Consumer Groups - 图1tip

此处需要注意两点:

  1. 当在同一个插件分别配置在消费者路由插件配置服务中时,只有一份配置是生效的,并且消费者的优先级最高。更多信息,请参考 Plugin
  2. 如果消费者和消费者组配置了相同的插件,则消费者中的插件配置优先级更高。对于第一点,因为消费者组需要配置在消费者中,因此你只需关心消费者中插件的优先级。

如下示例,假如你配置了一个消费者组:

“Consumer

  1. {
  2. "id": "bar",
  3. "plugins": {
  4. "response-rewrite": {
  5. "body": "hello"
  6. }
  7. }
  8. }

并配置了消费者:

“Consumer”

  1. {
  2. "username": "foo",
  3. "group_id": "bar",
  4. "plugins": {
  5. "basic-auth": {
  6. "username": "foo",
  7. "password": "bar"
  8. },
  9. "response-rewrite": {
  10. "body": "world"
  11. }
  12. }
  13. }

那么 response-rewrite 中的 body 将保留 world