今天测试遇到了问题,kafka生产者和消费者端的数据不一致,而且数据相差还比较大,测试生产10000条数据 消费者有时候能消费10000条 有时候只能消费9多条,最开始以为是ack等等的设置,之后调整了一些生产者的参数,发现还是有问题,最后还是另外一个同事发现了最根本的问题。
kafka生产者是异步生产数据,我写了个测试方法在main函数里面 用for循环模拟发送10000条数据,就是因为这个main线程导致了数据没有发送完成,因为kafka异步发送可能由于网络或者其他资源的影响,main线程执行完成了而kafka的数据并没有发送完,而当main线程执行完成之后JVM就会关闭,那么那些异步的消息没发送完成的也会因为jvm的关闭而丢失。