我正在尝试开发一个应用程序,它从Cache中读取字节数组(表示C结构和与UUID相关联的每个数组),并通过C中的Producer应用程序将其发送到Kafka Server。
kafka生产者应用程序累积固定数量的此类数据包并立即发送它们。
我希望获得的是确认批处理中的哪些消息已成功传递并获取其UUID,以便我可以从缓存应用程序中清除它们。我是kafka的新手,请指导我完成这项工作的最佳方式。
答案 0 :(得分:1)
向Kafka发送消息时,您可以将Producer配置为请求确认(通常公开为名为acks
的配置)。这允许生产者知道消息是否成功。
例如,使用librdkafka
(在我看来,最好的C Kafka客户端),您可以在产品请求完成时获得传递报告回调。它包含消息,并在发生故障时出错。这应该使您能够轻松识别哪些消息成功发送并将其标记为已完成。
请参阅rd_kafka_conf_set_dr_msg_cb
方法配置传递报告回调。 simple producer example证明了它的用法。
答案 1 :(得分:0)
为什么不创建另一个“侦听”已确认消息的消费者主题,然后将其从缓存中删除。然后,生产者可以在需要时将消息推送到该主题。