Исходный код вики Stream триггер
Версия 1.2 от Alexandr Fokin на 2026/08/26 18:59
Скрыть последних авторов
| author | version | line-number | content |
|---|---|---|---|
| |
1.2 | 1 | |(% style="width:147px" %)Введение|(% style="width:1334px" %)К данному решению пришел после [[Гарантированная конкурентная доставка сигнала (wakeup state)>>doc:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Тема\. Сигналы и триггеры.Про передачу сигнала на процесс.Гарантированная конкурентная доставка сигнала (wakeup state).WebHome]] и оно его заменило. |
| 2 | Нет недостатков прошлого решения. | ||
| 3 | |(% style="width:147px" %)Реализация|(% style="width:1334px" %)Триггер отслеживает не только поступающие сигналы но и состояние процесса. Находится ли он в состояние асинхронного выполнения или в состоянии ожидания внешнего сигнала. | ||
| 4 | Триггер запускается, когда есть сигнал и процесс находится в состоянии ожидания. | ||
| 5 | |(% style="width:147px" %) |(% style="width:1334px" %)((( | ||
| 6 | * Позволяет убрать лишние запросы пробуждения процесса (когда он и так запущен). | ||
| 7 | * __Позволяет полностью убрать задержку после остановки процесса__ (если есть новое сообщения, то он сразу же будет пробужден). | ||
| 8 | За счет того, что триггер точно знает, что есть новые сообщения и процесс только что уснул. | ||
| 9 | * Позволяет не выполнять wakeup код в конце сессии обработки (если отключить wakeup, оставить только stream trigger) | ||
| 10 | (блокировка и обновление wakeup entity, проверка wakeup условия). | ||
| 11 | ))) | ||
| 12 | |(% style="width:147px" %)Offset stream триггер.|(% style="width:1334px" %)((( | ||
| 13 | Можно также хранить в триггере offset (по аналогии с kakfa), в таком случае триггер может избежать перепроверки условия пробуждения (не проверять наличие необработанных сообщений в БД), достаточно только отслеживать значения смещений. | ||
| 14 | |||
| 15 | * Вводит 2 типа события, 1 сигнал о новом сообщении (содержит offset значение), 2 - процесс идет спать (содержит offset значение). | ||
| 16 | * Вводит дополнительное состояние в триггер: максимальный offset сообщения, максимальный offset обработанного процессом сообщения, флаг состояния сна процесса | ||
| 17 | ))) | ||
| 18 | |||
| 19 |