Комментарии 5
Если бы я не знал области применения RabbitMQ и Kafka, то после прочтения этой статьи у меня сложилось бы впечатление, что первый не нужен, так как Kafka быстрее. Стоило бы заострить внимание на том, что на Kafka реализовать чрезвычайно сложно, а на RabbitMQ получаем сразу из коробки. Маршрутизацию к Kafka можно прикрутить. Приоритезацию можно сделать на топиках. Даже pull модель можно превратить почти в push, через ksql stream или как это делает Sink с точки зрения БД. А вот подтверждение получения или обработки сообщений на Kafka нет. И реализовать его можно только на уровне приложения дополнительными топиками.
Спасибо за обратную связь. Действительно есть ряд классических сценариев, чаще всего связанных с традиционным обменом сообщениями, где RabbitMQ имеет ряд преимуществ и возможно ваша задача из их числа. Но и в Kafka вы можете достаточно просто реализовать собственный сценарий подтверждения доставки на уровне Consumer если вас не устраивает auto-commit. Для этого нужно выставить в настройках enable.auto.commit=false
Не путайте commit смещения с подтверждением получения или обработки сообщения. Например, Sink вынужден использовать dlq или падать, когда не может обработать сообщение. Не позволяет Kafka подтвердить сообщение с offset 10 и не подтвердить с offset 9.
возможно ваша задача из их числа
На самом деле RabbitMQ у нас так и не взлетел. Работает сочетание Kafka для данных, очереди в БД (ValKey или PostgreSQL) и двунаправленный потоковый gRPC для синхронной коммуникации.
Видимо Я просто Вас неправильно понял! В вашем контексте речь идет не совсем про классическое подтверждение в общепринятом понимании, тут скорее описан просто специфичный для вашего БП сценарий обмена сообщениями с конкретной бизнес логикой. В моей картине мира такие вещи не должны входить в стандартный набор функциональных возможностей брокера и вполне могут быть реализованы на уровне вашего прикладного ПО.
могут быть реализованы на уровне вашего прикладного ПО
Я вообще-то явно написал: "А вот подтверждение получения или обработки сообщений на Kafka нет. И реализовать его можно только на уровне приложения дополнительными топиками."
При этом подтверждение сообщений, а не смещения, в RabbitMQ есть "из коробки".

Сравнительный обзор механизмов polling в Kafka и Pub/Sub в RabbitMQ: особенности и области применения