Процесс A вычисляет значения для объектов a1, a2, a3 и т. Д. И отправляет результаты в очередь промежуточного программного обеспечения (RabbitMQ). Потребители читают очередь и обрабатывают эти результаты дальше.
Периодически процесс А должен посылать снимок этих значений, чтобы потребители могли сделать некоторые другие вычисления. Значения для этих объектов могут меняться независимо. Очередь может выглядеть следующим образом: a1, a1, a2, a1, a2, a2, a3 ... Потребители обрабатывают каждый элемент в очереди. Снимок должен содержать все объекты, и потребители будут обрабатывать это сообщение для всех объектов за один раз.
Таким образом, требуется, чтобы очередь была такой: : один тип для таких объектов, как a1, a2 и другой для снимка. Это означает, что они должны обрабатываться в разных очередях, но в этом случае возникает условие гонки: потребители могут обрабатывать объекты перед обработкой снимка.
Есть какой-нибудь шаблон для решения этой (довольно распространенной) проблемы? Мы используем RabbitMQ для очередей сообщений.