如何在Kafka中修复ConcurrentModificationException错误? (0.9.0.1)

时间:2016-03-31 15:54:27

标签: multithreading scala apache-kafka

我知道Kafka声明KafkaConsumer不是线程安全的。

所以我这样做了:(斯卡拉)

val m = Map(new TopicPartition(msg.topic(), msg.partition()) -> new OffsetAndMetadata(msg.offset()))
consumer.synchronized{ consumer.commitSync(m) }

我将访问消费者的内容放在同步块中,但我仍然在使用consumer.commitSync(m)的行上获得了ConcurrentModificationException错误。

为什么,我该怎么办?

我正在使用Akka流,因此必然会有隐藏的线程,但同步块不应该处理这个问题吗?

1 个答案:

答案 0 :(得分:0)

在文档中找到的一种方法是创建一个单独的线程,仅用于KafkaConsumer,并使用某种并发队列与外部工作进行通信。