Поделиться через


Сетка событий на Kubernetes — фильтрация событий для подписок

Сетка событий на Kubernetes позволяет задавать фильтры для любого свойства полезных данных JSON. Эти фильтры моделируются в виде набора условий AND, при этом каждое внешнее условие имеет необязательные внутренние условия OR. Для каждого условия AND задаются следующие значения:

  • OperatorType — тип сравнения;
  • Key — путь файла JSON к свойству, для которого применяется фильтр;
  • Value — контрольное значение, для которого выполняется фильтрация (или) Values — набор контрольных значений, по которым выполняется фильтрация.

Важно!

Служба "Сетка событий" в Kubernetes с поддержкой Azure Arc сейчас находится в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания и не рекомендована для использования рабочей среде. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования предварительных выпусков Microsoft Azure.

Фильтрация по типу события

По умолчанию все типы событий (атрибут type) для источника события отправляются в конечную точку. Можно сделать так, чтобы в конечную точку отправлялись только определенные типы событий. При фильтрации по типу события используется такой синтаксис JSON:

"filter": {
  "includedEventTypes": [
    "orderCreated",
    "orderUpdated"
  ]
}

В приведенном выше примере только события, имеющие тип orderCreated и orderUpdated, отправляются в конечную точку подписчика.

Ниже указан пример события.

[{
      "specVersion": "1.0",
      "type" : "orderCreated",
      "source": "myCompanyName/us/webCommerceChannel/myOnlineCommerceSiteBrandName",
      "id" : "eventId-n",
      "time" : "2020-12-25T20:54:07+00:00",
      "subject" : "account/acct-123224/order/o-123456",
      "dataSchema" : "1.0",
      "data" : {
         "orderId" : "123",
         "orderType" : "PO",
         "reference" : "https://www.myCompanyName.com/orders/123"
      }
}]

Фильтрация по теме

Для простой фильтрации по теме укажите начальное или конечное значение для этой темы. При фильтрации по теме используется такой синтаксис JSON:

"filter": {
  "subjectBeginsWith": "/account/acct-123224/"
}

Например, настроенный выше фильтр будет отсылать все заказы, связанные с учетной записью acct-123224 в конечную точку подписчика.

При публикации событий в разделах создавайте темы для событий так, чтобы подписчикам было проще определить, представляет ли событие для них интерес. Подписчики могут использовать свойство темы для фильтрации и маршрутизации событий. Можно добавить путь к расположению, в котором произошло событие, чтобы подписчики могли выполнять фильтрацию по сегментам этого пути. Путь позволяет подписчикам сузить или расширить область фильтрации. Например, если указать в разделе трехсегментный путь, такой как /A/B/C, подписчики смогут выполнить фильтрацию по первому сегменту /А, чтобы получить широкий набор событий. Эти подписчики получат события с такими темами, как /A/B/C и /A/D/E. Другие подписчики могут выполнить фильтрацию по /A/B, чтобы получить более узкий набор событий.

Фильтрация по значениям в данных события

Дополнительные сведения о расширенной фильтрации см. в разделе Расширенная фильтрация в службе "Сетка событий" Azure. Сетка событий в Kubernetes не поддерживает следующие функции и операторы.

  • Фильтрация данных массива в ключах входящих событий
  • Разрешить фильтрацию атрибутов контекста расширений CloudEvents.
  • Следующие операторы
    • StringNotContains
    • StringNotBeginsWith
    • StringNotEndsWith
    • NumberInRange
    • NumberNotInRange
    • IsNullOrUndefined
    • IsNotNull

Дальнейшие шаги

Дополнительные сведения о назначениях и обработчиках, поддерживаемых Сеткой событий в Azure Arc для Kubernetes, см. в статье Сетка событий в Kubernetes — обработчики событий.