scala-如何将回调传递给方法

5lhxktic  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(328)

我试图通过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)
  }

谢谢。
加分-这看起来像是一个测试,例如使用糖?

wb1gzix0

wb1gzix01#

您可以这样处理回调:

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

offsetcommitcallback是一个接口(与scala中的trait类似),因此可以匿名初始化示例。
下面是spark项目中的一个快速幻影。

相关问题