Scala как подписаться на несколько тем кафки - PullRequest
0 голосов
/ 25 декабря 2018

Я хотел бы преобразовать строковый массив / список в util.Collection [String] объект в Scala.Я пробовал несколько подходов, но не получилось.

import org.apache.kafka.clients.consumer.KafkaConsumer


object KafkaConsumerApp {

  def main(args: Array[String]): Unit = {

    val prop:Properties = new Properties()
    prop.put("bootstrap.servers","192.168.1.100:9092,192.168.1.141:9092,192.168.1.113:9092,192.168.1.118:9092")
    prop.put("key.deserializer","org.apache.kafka.common.serialization.StringDeserializer")
    prop.put("value.deserializer","org.apache.kafka.common.serialization.StringDeserializer")

    val consumer = new KafkaConsumer(prop)

    val topics = List[String] ("my_topic_partition","my_topic_partition")
    val a = Collections.singletonList(topics)

    consumer.subscribe(a)

  }
}

consumer.subscribe (a) возвращаемая ошибка времени компиляции

Error:(24, 14) overloaded method value subscribe with alternatives:
  (x$1: java.util.regex.Pattern)Unit <and>
  (x$1: java.util.Collection[String])Unit
 cannot be applied to (java.util.List[List[String]])
    consumer.subscribe(a)

1 Ответ

0 голосов
/ 25 декабря 2018

Вам не нужно делать Singleton List.List - это уже Collection.

val: List[String] topics = List("my_topic_partition","my_topic_partition")
consumer.subscribe(topics)

Если вам нужна Java, просто поставьте .asJava как topics.asJava и используйте импорт import collection.JavaConverters._

...