Короткий ответ
Producer — часть системы, которая создаёт и отправляет сообщения в очередь; consumer — часть, которая читает сообщения из очереди и обрабатывает их; это разные роли, часто в разных сервисах.
Как это работает подробнее
Producer не знает, кто и когда обработает сообщение; consumer подписывается на очередь/топик и обрабатывает сообщения в своём темпе.
Пример кода
Схема
Producer -> Queue "orders.created" -> [Consumer A, Consumer B] # конкурируют, делят сообщенияЧто использовать на практике
- Практика. Один producer может иметь несколько consumer'ов для масштабирования обработки; в Kafka несколько consumer'ов в одной consumer group делят партиции между собой.
Подводные камни
- Риск. Путать широковещательную доставку (каждый consumer получает копию, fanout) с разделением нагрузки (конкурирующие consumer'ы делят сообщения).