API. Новое ТЗ: без работы rest'а программа не должна работать.
Ранее была политика рестартов rest API, не влияющая на функционирование всех не зависимых(!) компонет.
Проблема:
Т.к. всё компоненты работают асинхронно - проблема в том чтобы отловить то что ListenAndServe() стартовал.
Не путать с отлавливанием падения, это как раз сделать просто.
Вариант:
1) Писать проверку, которая будет стучаться в какой-нибудь rootHandler. Если получен валидный ответ, то старт остальных компонетов.
2) При падении rest'а в *логике* делать graceful shutdown остальных компонентов:
if err := restAPI.server.ListenAndServe(); err != http.ErrServerClosed {*логика*}
Может есть решение проще?
все компоненты в одном процессе?
Обсуждают сегодня