java - Scala - 如何将回调传递给方法

标签 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?

最佳答案

你可以这样处理回调:

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

OffsetCommitCallback是一个接口(interface),(“类似于”Scala 中的trait),因此您可以匿名初始化一个实例。

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

关于java - Scala - 如何将回调传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50050914/

相关文章:

java - 如何使用 avro 和 kafka 发送对象列表

hadoop - 如何在 hadoop 配置中使用亚马逊实例的公共(public) IP?

java - 如何将相同的对象添加到多态数组但能够对该对象的重复版本进行更改?

c# - 在 Scala 中实现类似 LINQ 的功能

scala - 如何检查 WeakTypeTag 或 Type 是否代表具体类型?

class - Scala:伴随对象的目的

java - 创建新的自定义对象与在 Java 中将同一对象的多个值设置为 Null

java - 使用 TextIO 读取外部文件

java - 修复 Eclipse 中的模块 {a} 不会 "opens {package}"到模块 {B}

java - 与 Kafka 消费者匹配的扩展模式