Scala - как передать Callback в метод - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь представить метод Java через Scala (от 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 голосов
/ 26 апреля 2018

Вы можете обработать обратный вызов следующим образом:

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

OffsetCommitCallback - это интерфейс («похож» на trait в Scala), поэтому вы можете инициировать экземпляр анонимно.

Вот - это быстрое появление в проекте Spark.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...