Десять worker-ов должны атомарно распределять записи outbox; иначе они могут одновременно публиковать одно событие. Параллелизм также усложняет сохранение порядка.
Что изменится, если outbox одновременно обрабатывают 10 воркеров?
Десять worker-ов должны атомарно распределять записи outbox; иначе они могут одновременно публиковать одно событие. Параллелизм также усложняет сохранение порядка.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Десять worker-ов должны атомарно распределять записи outbox; иначе они могут одновременно публиковать одно событие. Параллелизм также усложняет сохранение порядка.
Короткая транзакция может выбирать пакет через FOR UPDATE SKIP LOCKED и назначать владельца/lease. После commit worker публикует события, затем подтверждает результат с проверкой владения. Просроченный lease позволяет восстановить зависшую работу.
Сбой после публикации всё ещё создаёт повтор, поэтому дедупликация остаётся обязательной. Для строгого порядка по объекту нельзя бесконтрольно брать его события разными worker-ами: применяют последовательную обработку ключа или проверку номера версии. Ограничивайте размер пакета и нагрузку на БД/брокер; десять worker-ов не гарантируют десятикратный рост скорости.