Как реализовать Java-интерфейс (для Kafka) в Scala? - PullRequest
0 голосов
/ 28 апреля 2018

Как реализовать ConsumerRebalanceListener с использованием Scala?

public class SaveOffsetsOnRebalance implements ConsumerRebalanceListener {
}

А что может быть примером вновь созданного слушателя ребаланса Scala при подписке на темы?

Попытка изучить и обдумать реализацию методов / интерфейсов Java в Scala ..

Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

В Scala есть признаки, соответствующие интерфейсам в Java. Черта Scala конвертируется в Java-интерфейсы внутри. И точно так же, как мы реализуем интерфейсы в Java , так же, как мы расширяем черты в Scala . Так что вам просто нужно расширить эти интерфейсы Java, как если бы это была черта Scala, потому что под капотом оба одинаковы.

class SaveOffsetsOnRebalance extends ConsumerRebalanceListener {}
0 голосов
/ 28 апреля 2018

Вы можете просто расширить интерфейс напрямую

class MyListener extends ConsumerRebalanceListener {
     ...
 }

А пример из документации API будет выглядеть так:

  class SaveOffsetsOnRebalance(consumer: Consumer[_, _] ) extends ConsumerRebalanceListener {

   def onPartitionsRevoked(partitions: Collection[TopicPartition]): Unit = {
       // save the offsets in an external store using some custom code not described
   partitions.toScala.forEach(
         saveOffsetInExternalStore(consumer.position(partition))
   )
   }

   def onPartitionsAssigned(partitions: Collection[TopicPartition]): Unit = {
       // read the offsets from an external store using some custom code not described here
       partitions.forEach(
          consumer.seek(partition, readOffsetFromExternalStore(partition)))
   }
 }

Просто добавьте правильный импорт

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