Joe*_*Joe 1 java scala apache-kafka
我正在尝试通过 Scala 公开 Java 方法(来自 Kafka:https : //kafka.apache.org/10/javadoc/index.html? org/apache/kafka/clients/consumer/ KafkaConsumer.html)。
这是原始的 Java 方法:
public void commitAsync(OffsetCommitCallback callback)
Run Code Online (Sandbox Code Playgroud)
如何传递callback
给Scala中的方法?我有类似的东西:
def commitAsync() = {
consumer.commitAsync(OffsetCommitCallback callback)
}
Run Code Online (Sandbox Code Playgroud)
谢谢。
加分点 - 例如使用 MockitoSugar 的测试看起来如何?
您可以像这样处理回调:
def commitAsync() = {
consumer.commitAsync(new OffsetCommitCallback() {
def onComplete(m: java.util.Map[TopicPartition, OffsetAndMetadata], e: Exception) {
//...
}
})
}
Run Code Online (Sandbox Code Playgroud)
OffsetCommitCallback是一个接口(“类似于” Scala 中的特征),因此您可以匿名初始化一个实例。
这是 Spark 项目中的一个快速幻影。