Stream триггер

Версия 1.3 от Alexandr Fokin на 2026/08/28 11:28

ВведениеК данному решению пришел после Гарантированная конкурентная доставка сигнала (wakeup state) и оно его заменило.
Нет недостатков прошлого решения.
РеализацияТриггер отслеживает не только поступающие сигналы но и состояние процесса. Находится ли он в состояние асинхронного выполнения или в состоянии ожидания внешнего сигнала.
Триггер запускается, когда есть сигнал и процесс находится в состоянии ожидания.
 
  • Позволяет убрать лишние запросы пробуждения процесса (когда он и так запущен).
  • Позволяет полностью убрать задержку после остановки процесса (если есть новое сообщения, то он сразу же будет пробужден).
    За счет того, что триггер точно знает, что есть новые сообщения и процесс только что уснул.
  • Позволяет не выполнять wakeup код в конце сессии обработки (если отключить wakeup, оставить только stream trigger)
    (блокировка и обновление wakeup entity, проверка wakeup условия).
Offset stream триггер

Можно также хранить в триггере offset (по аналогии с kakfa), в таком случае триггер может избежать перепроверки условия пробуждения (не проверять наличие необработанных сообщений в БД), достаточно только отслеживать значения смещений.

  • Вводит 2 типа события, 1 сигнал о новом сообщении (содержит offset значение), 2 - процесс идет спать (содержит offset значение).
  • Вводит дополнительное состояние в триггер: максимальный offset сообщения, максимальный offset обработанного процессом сообщения, флаг состояния сна процесса
Каскад триггеровСпособ для обработки конкурентных сигналов (несколько триггеров). Для процесса создается один корневой триггеров, а все другие (дочерние) триггеры передают сигнал на него.