Упрощенно:
Есть golang приложение, которое по http получает данные с внешнего сервера раз в секунду, как-то их обрабатывает и отправляет назад.
Если при получении данных сервер возвращает код 500, то необходимо поставить "приложение на паузу": перестать обрабатывать уже полученные данные и отсылать обработанные назад на сервер (технически это будет значить очистку буферизованных каналов и данных, которые уже крутятся внутри приложения).
Как только ответ от сервера приходит 200 - снова все продолжает работать.
Подскажите, пожалуйста, ссылки с примерами, как лучше управлять таким как бы глобальным состоянием приложения.
Что значит "как только ответ приходит 200"?
Если приложение после 500 ответа перестает обрабатывать данные, значит оно перестает и посылать запросы на сервер. Как тогда оно может получить 200 без запроса?
А вообще задача напоминает больше обработку очереди сообщений. Лучше бы это делать на на HTTP-запросах, а на чем-то предназначенном для очередей - та же Kafka, RabbitMQ и подобных.