Вопрос проверяет, понимаете ли вы разницу между хранением состояния и передачей событий.
Брокер сообщений хорошо передаёт события, но плохо подходит для хранения актуального состояния. Postgres обеспечивает надёжное и долговечное хранение статусов. В БД легко сделать запрос текущего состояния и истории изменений. Также проще реализовать транзакционность и восстановление после сбоев. Поэтому Postgres часто используют как источник истины для статусов задач.
Хранение статуса задачи — это поддержание актуального и консистентного состояния выполнения, доступного для чтения в любой момент.
Брокер ориентирован на поток событий
Сообщения читаются и “уходят”.
Получить текущее состояние без дополнительной логики сложно.
Сложность повторных чтений
Нужно replay событий или отдельные consumer-группы.
Это усложняет архитектуру.
Ограниченные запросы
Нельзя просто сделать SELECT status WHERE task_id = ....
Источник истины
Явное хранение текущего состояния.
Удобно для API и админ-интерфейсов.
Транзакционность
Статус меняется атомарно вместе с бизнес-логикой.
История и аудит
Можно хранить временные метки, ошибки, попытки.
Восстановление после сбоев
Перезапуск сервисов не теряет состояние задач.
Брокер используется для запуска и обработки задач.
Postgres — для хранения их статуса и результата.
Postgres выбирают тогда, когда статус задачи — это долгоживущее состояние, а не просто событие, и к нему нужен надёжный и удобный доступ.