Kafka Streams - пунктуатор расписания процессора по выражению cron - PullRequest
0 голосов
/ 19 января 2019

ProcessorContext.schedule(..) принимает параметр интервала продолжительности, и мы могли бы указать, что какое-то действие (пунктуатор) будет выполняться каждый интервал времени X (например, каждый час). При таком планировании время выполнения зависит от времени последнего перезапуска приложения. И, кроме того, если у нас есть несколько экземпляров приложения, и только приложение на одном узле было перезапущено (например, из-за некоторой проблемы с продвижением), пунктуаторы будут выполняться в абсолютно разные моменты времени на каждом узле. Для некоторых случаев использования это может быть неприменимо, и необходимо выполнять пунктуатор по выражению cron, например, при "0 0 * * * ?" выполнять каждый час, примерно в момент времени XX:00:00.

Можно ли запланировать пунктуатор по выражению cron? или существует какой-то обходной путь? В качестве грязного обходного пути мы могли бы рассчитать временной интервал с настоящего момента до предстоящего первого выполнения cron внутри Processor.init(..) и при первом запуске пунктуатора отменить существующее планирование и создать новое, преобразовав выражение из cron в экземпляр длительности. кажется, что такой обходной путь подвержен ошибкам.

...