首页 > 解决方案 > 如何在Scala中为Kafka(commitSync with partitions)公开Java方法?

问题描述

我正在尝试通过 Scala 公开 Java 方法(有关原始 Java 方法的更多详细信息 - 它来自Kafka

这是原始的 Java 方法:

public void commitSync(Map<TopicPartition,OffsetAndMetadata> offsets)

如何公开参数并将参数传递给Scala中的方法?我有类似的东西:

def commitSync() = {
     consumer.commitSync(...)
}

谢谢。

标签: javascalaapache-kafka

解决方案


您的 Scala 代码段看起来是正确的,这就是我将如何填写其余部分的方式:

import org.apache.kafka.clients.consumer.{KafkaConsumer, OffsetAndMetadata}
import org.apache.kafka.common.TopicPartition

import collection.mutable.Map
import collection.JavaConverters._

//initialise your consumer the way you want
val consumer = createKafkaConsumer(config, subscriptions)

//you could accept a scala.collection.mutable.Map here
def commitSync(offsets: Map[TopicPartition, OffsetAndMetadata]) = {
    //and then convert it to a java.util.Map
    consumer.commitSync(offsets.asJava)
}

推荐阅读