Как реализовать Java-интерфейс (для Kafka) в Scala?
Как реализовать ConsumerRebalanceListener
используя Scala?
public class SaveOffsetsOnRebalance implements ConsumerRebalanceListener {
}
И что может быть примером того, что новый слушатель Scala восстанавливает баланс при подписке на темы?
Пытаюсь изучить и обдумать реализацию методов / интерфейсов Java в Scala.
Благодарю.
2 ответа
Решение
Вы можете просто расширить интерфейс напрямую
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)))
}
}
Просто добавьте правильный импорт
В Scala есть черты, соответствующие интерфейсам в Java. Черта Scala конвертируется в Java-интерфейсы внутри. И так же, как мы реализуем интерфейсы в Java, так же, как мы расширяем черты в Scala. Так что вам просто нужно расширить эти интерфейсы Java, как если бы это была черта Scala, потому что под капотом оба одинаковы.
class SaveOffsetsOnRebalance extends ConsumerRebalanceListener {}