Обновить

Комментарии 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 есть "из коробки".

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации