繁体   English   中英

在kafka java中生成所有消息到主题后如何发送元数据?

[英]How to send Meta data after producing all message to topic in kafka java?

我正在使用 Java Kafka 客户端库为 Kafka 主题生成学生详细信息,我想要的是一旦生成了所有记录,我想将消息计数与其他一些元数据一起发送到同一个 Kafka 主题。

 List<Student> allStudent;

假设 allStudent 列表的大小是 10

然后,一旦所有学生记录都生成到该主题,那么我想生成另一条消息,例如:“10 条记录成功生成到主题”。

“10 条记录成功生成到主题” - 这应该是要生成的最后一条消息。

Kafka 生产者send()方法返回Future<RecordMetadata> object。 一种选择是在这个 Future 上调用get()方法。 一旦get()方法返回,就可以确定数据已经写入 Kafka。 此外,您可能应该为生产者配置耐用性( acks=all设置)。 一旦您的 get 方法返回,您就可以发送确认消息。

我仍然会考虑发送这些确认消息是一种有问题的做法。 它们有什么用?

我不确定真正的商业案例是什么。

但是在 KAFKA 中,我们将这种行为称为控制消息,它是一种关于先前发送的记录列表的元数据,用于以后进行对账,尤其是批处理。 但是控制消息完全由生产者驱动,即生产者应该有一个同步或异步发送的消息计数器,并将控制消息发送到另一个主题,我们称之为控制主题,消费者订阅执行之间的增量比较数据主题(事件模式)和控制主题(控制消息模式)。

除此之外,如果我想对代理领导者和副本产生数据有极高的信心,您应该使用acks=all并为复制因子和同步副本参数设置正确的值。

总之,这取决于生产者您希望如何实现这一点,因为 KAFKA 对此没有具体的实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM