Ваш вариант использования кажется идентичным этому примеру из документации kubernetes.
Как вы сказали, activeDeadlineSeconds
не тот параметр, который вы должны использовать здесь.
Я не уверен, почему вы хотите, чтобы модуль не работал, если он не может обработать элемент в течение определенного периода времени. Я вижу несколько разных подходов, которые вы можете использовать здесь, но требуется больше информации о природе вашей проблемы, чтобы знать, какой из них выбрать. Одним из подходов к решению вашей проблемы было бы установить параллелизм задания на количество модулей, которые вы хотели бы запустить одновременно, и установить это поведение в самом коде -
- Если проблема, задерживающая обработку, является временной , вы, вероятно, захотите завершить текущую транзакцию, сохранить элемент в своей очереди и возобновить обработку того же элемента
- Если один и тот же элемент не прошел x раз, его следует удалить из очереди и отправить в какой-то вид очереди недоставленных сообщений, ожидающей устранения неполадок в более поздний момент времени
Другой подход заключается в разветвлении сообщений в очереди таким образом, что будет вызывать рабочий модуль для каждого сообщения, так же как этот пример изображен.
Выбор этого решения действительно приведет к тому, что каждый модуль будет слишком долго обрабатывать элемент, чтобы выйти из строя, и если вы установите restartPolicy
созданных вами модулей на never
, вы должны иметь список неисправных модулей на ваших руках, которые соответствуют количеству обработанных элементов.
Сказав все это, я не ошибаюсь в модулях. Это правильный подход, и отслеживание неудачных событий обработки должно осуществляться с помощью инструментария, либо по журналам контейнеров, либо по метрикам.