Пользовательские расширения потоковой передачи Ballerina могут быть написаны для применения логики конкретного варианта использования, которая недоступна в Ballerina Streaming из коробки. Существует два типа потоковых расширений Ballerina, которые вы можете написать для удовлетворения ваших конкретных сценариев использования потоковой передачи. Они есть;

  1. Расширение окна
  2. Расширение агрегатора

Написание расширений окна

Расширение окна позволяет собирать и истекать события без изменения формата события на основе заданных входных параметров. Чтобы написать собственное расширение Window, введите тип объекта, реализующий абстрактный объект «Window» пакета «streams». Этот тип окна состоит из двух методов, как показано ниже;

‹Window›: process (…) - Метод для реализации фактической логики окна, когда событие прибывает в окно.

‹Window›: getCandidateEvents (…) - Метод для возврата событий-кандидатов в сценарии объединения.

Например, расширение окна, созданное с именем функции «длина», может упоминаться в запросе следующим образом:

Пример реализации расширения LengthWindow можно найти ниже;

Написание расширений агрегатора

Расширения агрегатора потребляют ноль или более параметров для каждого события и выводят один атрибут, имеющий агрегированные результаты, основанные на входных параметрах, в качестве вывода. Эти расширения агрегатора можно использовать вместе с окном, чтобы найти агрегированные результаты на основе данного окна.

Чтобы написать собственный агрегатор, введите тип объекта, реализующий абстрактный объект «Агрегатор» пакета «streams». Этот тип агрегатора состоит из двух методов, как показано ниже;

‹Aggregator›: process (…) - метод для реализации фактической логики агрегирования при поступлении события в агрегатор.

‹Aggregator›: copy (…) - метод создания и возврата нового экземпляра агрегатора.

Например, расширение агрегатора, созданное с именем функции «сумма», может быть указано в запросе следующим образом:

Пример реализации расширения агрегатора «сумма» можно найти ниже;

Если вы найдете этот пост полезным, поделитесь или оставьте комментарий… 🙂