Выделенный collector читает results и атомарно обновляет общее хранилище задач. Status читает снимок из того же хранилища, а не пытается забрать событие из канала.
Кто сохраняет результаты фоновых задач из канала
Выделенный collector читает results и атомарно обновляет общее хранилище задач. Status читает снимок из того же хранилища, а не пытается забрать событие из канала.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Workers Go пишут {ID, Result, Err} в results. API Status(id) должен возвращать queued, running, done или failed. Кто должен читать канал и где хранить итог?
Ответ
Выделенный collector читает results и атомарно обновляет общее хранилище задач. Status читает снимок из того же хранилища, а не пытается забрать событие из канала.
Канал — механизм передачи, не долговременный архив результатов. Для одного процесса допустима защищённая mutex map; после рестарта она исчезнет. Для устойчивости используйте БД и определите повторное выполнение. Закрывать results нужно после завершения всех отправителей, чтобы collector дочитал остаток; не удерживайте mutex во время блокирующей отправки.