繁体   English   中英

需要Spring Kafka KafkaTemplate.flush()吗?

[英]Spring Kafka KafkaTemplate.flush() required?

我是第一次使用Spring kafka,并且已经通过使用spring kafka创建了生产者和消费者。 我在本地主机上运行我的kafka服务器,并创建了一个名为test的主题。 我无法通过简单地打电话给消费者发送消息

        KafkaTemplate.send(topicName,Data);

在同一个对象上调用send之后,我必须在kafkaTemplate上调用flush(),然后使用者能够接收数据。 好的,它很好用。 但是有人可以向我解释幕后发生的事情吗? 为什么需要调用flush方法。

摘自Spring Kafka官方文档。

           public void flush()

冲洗生产者。 注意仅当ProducerFactory提供单个生产者(例如DefaultKafkaProducerFactory)时,才调用此方法才有意义。

先感谢您。

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

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

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

flush强制将发送队列中的所有邮件传递到服务器。

暂无
暂无

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

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