У меня есть интересный вариант использования, который я хочу проверить с помощью Flink.У меня есть входящий поток Message
, который либо PASS
, либо FAIL
.Теперь, если сообщение имеет тип FAIL
, у меня есть нисходящий ProcessFunction
, который сохраняет состояние Message
, а затем отправляет команды pause
всему, что зависит от этого.Когда я получаю сообщение PASS
, которое связано с FAIL
, полученным ранее (с помощью идентификатора сообщения), я отправляю команды resume
всему, что было приостановлено ранее.
Теперь я планируюиспользование State TTL для истечения сохраненного состояния FAIL
и возобновления всего после определенного времени ожидания, даже если я не получил сообщение PASS
с тем же идентификатором сообщения.Может ли это быть сделано только с помощью Flink, или мне понадобится какой-нибудь внешний таймер для отправки сообщений о тайм-ауте в мою программу?
Я имел в виду нечто подобное, чтобы заставить его работать во Flink:
Для каждой Message
добавьте метку времени и передайте ее функции процесса, которая ждет до current_ts - timestamp == timeout
, прежде чем отправить ее, чтобы возобновить все, что было приостановлено модулем.Есть ли лучший способ или вы, ребята, думаете, что это нормально?