Генерация UUID в ответ на сообщение, отправленное Kafka Producer

Я пытаюсь разработать приложение, которое считывает байтовые массивы (представляющие структуру C и каждый массив, связанный с UUID) из кэша и отправляет его на Kafka Server через приложение Producer в C.

Приложение производителя kafka накапливает фиксированное количество таких пакетов и отправляет их сразу.

Что я хочу сделать, так это получить подтверждение того, что из сообщений в пакете были успешно доставлены, и получить их UUID, чтобы я мог удалить их из своего приложения кеша. Я новичок в kafka, пожалуйста, покажите мне, как лучше всего это сделать.

2 ответа

Почему бы не создать еще одну потребительскую тему, которая "прослушивает" сообщения, которые были подтверждены, а затем удаляет их из кэша. Затем продюсер может просто отправлять сообщения в эту тему, когда это необходимо.

При отправке сообщений в Kafka вы можете настроить ваш Producer для запроса подтверждений (обычно выставляются в виде конфигурации, называемой acks). Это позволяет производителю знать, было ли сообщение успешно или нет.

Например, с librdkafka (на мой взгляд, лучший клиент C Kafka) вы можете получить обратный вызов отчета о доставке, когда запрос на производство будет завершен. Содержит сообщение и ошибку в случае сбоя. Это должно позволить вам легко определить, какие сообщения были успешно отправлены, и пометить их как выполненные.

Увидеть rd_kafka_conf_set_dr_msg_cb способ настроить обратный вызов отчета о доставке. Простой пример производителя демонстрирует его использование.

Другие вопросы по тегам