Flink Trigger, когда состояние истекает - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть интересный вариант использования, который я хочу проверить с помощью Flink.У меня есть входящий поток Message, который либо PASS, либо FAIL.Теперь, если сообщение имеет тип FAIL, у меня есть нисходящий ProcessFunction, который сохраняет состояние Message, а затем отправляет команды pause всему, что зависит от этого.Когда я получаю сообщение PASS, которое связано с FAIL, полученным ранее (с помощью идентификатора сообщения), я отправляю команды resume всему, что было приостановлено ранее.

Теперь я планируюиспользование State TTL для истечения сохраненного состояния FAIL и возобновления всего после определенного времени ожидания, даже если я не получил сообщение PASS с тем же идентификатором сообщения.Может ли это быть сделано только с помощью Flink, или мне понадобится какой-нибудь внешний таймер для отправки сообщений о тайм-ауте в мою программу?

Я имел в виду нечто подобное, чтобы заставить его работать во Flink:

Для каждой Message добавьте метку времени и передайте ее функции процесса, которая ждет до current_ts - timestamp == timeout, прежде чем отправить ее, чтобы возобновить все, что было приостановлено модулем.Есть ли лучший способ или вы, ребята, думаете, что это нормально?

1 Ответ

0 голосов
/ 16 февраля 2019

Похоже, было бы более просто использовать таймер для истечения состояния (вызывая state.clear () в методе onTimer), а не использовать состояние TTL.Тот же метод onTimer также может организовать одновременное возобновление работы.

...