gpt4 book ai didi

java - 需要 Spring Kafka KafkaTemplate.flush() 吗?

转载 作者:行者123 更新时间:2023-11-29 04:22:39 29 4
gpt4 key购买 nike

我是第一次使用Spring kafka,使用spring kafka创建了Producer和Consumer。我的 kafka 服务器在本地主机上运行,​​并创建了一个名为 test 的主题。我无法通过简单地调用向消费者发送消息

        KafkaTemplate.send(topicName,Data);

在同一对象上调用 send 之后,我必须在 kafkaTemplate 上调用 flush() ,然后消费者才能接收到数据。好的,它可以工作,而且很棒。但是谁能向我解释幕后发生的事情?为什么需要调用flush方法。

来自 spring kafka 官方文档。

           public void flush()

刷新生产者。注意 只有当 ProducerFactory 提供单例生产者(例如 DefaultKafkaProducerFactory)时调用此方法才有意义。

提前谢谢你。

最佳答案

生产者的实现是异步的。消息存储在内部队列中等待内部线程发送,这将提高潜在批处理的效率。

因此,当程序退出时,消息可能会保留在客户端的内存中。在这种情况下,Kafka 服务器实际上并没有收到这些消息。

消息将在 queue.buffering.max.ms 或其他大小/数量限制定义的超时时间内发送。

flush 强制将发送队列中的所有消息传送到服务器。

关于java - 需要 Spring Kafka KafkaTemplate.flush() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48144997/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com