kafka生产者生产30条数据,而消费者却不一定消费了30条数据,经过探索发现了main线程执行完成了而kafka的数据并没有发送完,而当main线程执行完成之后JVM就会关闭,那么那些异步的消息没发送完成的也会因为jvm的关闭而丢失。而导致部分消费者没有接收到消息。
kafkatemplate.flush()强制将缓冲区中的数据发送出去,不必等到缓冲区满.
Kafka消息丢失解析
探讨了Kafka中消息可能丢失的问题,特别是在main线程完成执行而JVM关闭时,未发送完的消息会丢失,导致消费者无法接收全部消息。介绍了如何使用kafkatemplate.flush()确保所有消息被发送。
kafka生产者生产30条数据,而消费者却不一定消费了30条数据,经过探索发现了main线程执行完成了而kafka的数据并没有发送完,而当main线程执行完成之后JVM就会关闭,那么那些异步的消息没发送完成的也会因为jvm的关闭而丢失。而导致部分消费者没有接收到消息。
kafkatemplate.flush()强制将缓冲区中的数据发送出去,不必等到缓冲区满.
781
1万+

被折叠的 条评论
为什么被折叠?