现在有个问题请教下:有谁了解kafka,现在的问题就是我要读某个group中的固定个数分区的东西,然后consume这些数据的时候我要启用多线程读取,怎么保证我的数据不会重复(个人认为是不是偏移量就可以看出是否重复),每个线程读到一堆数据后,然后解析成单个对象,再启动不同的线程入库,这种话多线程套多线程效率是不是会很低,多节点部署这个应用会平分这个执行效率,请问怎么解决这类问题
你的这个结构首先要换一下。
如果你要去读取group中不同分区中的数据。对于你的consumer端来说,应该是1对1进行读取,也就是说,一个java进程对应一个分区partition。
你自己所想的,用一个java进程去监听多个分区,那你就应该让producer端将数据都放到一个partition中即可。这主要还是取决于你的消息数量和
你的处理速度。这个你应该是很好评估的。
至于你有没有处理重复的消息,这个你大可不必关心,这是消息中间件最基本的保证,kafka虽然事务性比较弱,如果你特别看重这点,你可以换
其他的消息中间件,也是可以的。比如activemq等。