Генерация 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
способ настроить обратный вызов отчета о доставке. Простой пример производителя демонстрирует его использование.