При деплое обработчик сообщений RabbitMQ обрывается посреди длинной операции
Фоновая служба обрабатывает сообщения до 40 секунд. При выкатке Kubernetes посылает SIGTERM, хост начинает остановку, служба получает отмену, но через какое-то время процесс завершается, не дождавшись конца обработки, — операция остаётся в неконсистентном состоянии.
Что нужно настроить и учесть?
- HostOptions.ShutdownTimeout и grace-период пода, плюс идемпотентность
- Игнорировать токен отмены в обработчике
- Перехватывать SIGKILL и продолжать работу
- Обрабатывать каждое сообщение в отдельном процессе
