Scala - 如何将Callback传递给方法

时间:2018-04-26 19:54:54

标签: 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)

如何将callback传递给Scala中的方法?我有类似的东西:

 def commitAsync() = {
    consumer.commitAsync(OffsetCommitCallback callback)
  }

感谢。
奖励积分 - 看起来像是对它的测试,例如使用MockitoSugar?

1 个答案:

答案 0 :(得分:3)

您可以像这样处理回调:

def commitAsync() = {
   consumer.commitAsync(new OffsetCommitCallback() {
      def onComplete(m: java.util.Map[TopicPartition, OffsetAndMetadata], e: Exception) {
        //...
      }
   })
}

OffsetCommitCallback界面,("类似"为特征在Scala中),因此您可以匿名初始化实例。

Here's是Spark项目中的一个快速实现。