Я создаю систему, в которой двум различным объектам необходимо обрабатывать сообщения из одного источника (по-разному - например, один будет регистрировать все сообщения, а другой объект может захотеть агрегировать данные).
В идеале каждая сущность полностью масштабируется для обеспечения производительности и отказоустойчивости, поэтому у нас есть несколько издателей, несколько подписчиков журналов и несколько подписчиков агрегации, но все же каждое сообщение, генерируемое каждой опубликованной публикацией, обрабатывается ровно одним подписчиком журнала и одним подписчиком агрегации.
С помощью AMQP мы можем добиться этого путем публикации в разветвленном обмене, который распределяет сообщения в две очереди, где у каждой очереди много подписчиков. Я понимаю, что такое же поведение может быть достигнуто в NATS, просто заставив всех подписчиков прослушивать один и тот же «объект», используя два разных «имени группы очереди» на основе их ролей.
В таком случае сообщения для субъекта будут доставлены одному подписчику из каждой группы очереди, т.е. каждое сообщение будет доставлено ровно n раз, где n - количество отдельных групп очереди, а не количество подписчиков. Это правильно?