Сетка событий на 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 — обработчики событий.