kafka消费的时候起来多个线程来对应partition,我们处理消费数据的业务逻辑是先按主键删除,然后再插入新的数据;
但是由于topic产生的数据同一个主键会一秒内有100条左右,分布在多个partition,所以多个线程会同时执行删除和插入,
这会导致数据库产生主键冲突,因为有的线程已经写入了,有的在删除,混在一起。导致不停的报错,主键已存在。
解决方法就是给处理删除和插入的方法加一个锁,我这里用的是sychronized加到方法上,就够用了。
kafka消费的时候起来多个线程来对应partition,我们处理消费数据的业务逻辑是先按主键删除,然后再插入新的数据;
但是由于topic产生的数据同一个主键会一秒内有100条左右,分布在多个partition,所以多个线程会同时执行删除和插入,
这会导致数据库产生主键冲突,因为有的线程已经写入了,有的在删除,混在一起。导致不停的报错,主键已存在。
解决方法就是给处理删除和插入的方法加一个锁,我这里用的是sychronized加到方法上,就够用了。
本文标题:Kafka多线程消费并发报错记录
本文链接:https://www.haomeiwen.com/subject/pfrlydtx.html
网友评论