ошибка в Scala для каждого цикла при попытке перебрать записи потребителя - PullRequest
0 голосов
/ 30 апреля 2019

Не удается разрешить символ для Foreach

import java.util._
import org.apache.kafka.clients.consumer._
import org.apache.kafka.common.serialization.Deserializer

object ConsumerExample {

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

    val T_Name = "CarSensor"
    val T_Group_Name = "CarSensorGroup"
    val props = new Properties()

    props.put("bootstrap.servers", "localhost:9092,localhost:9093,localhost:9094")
    props.put("group.id",T_Group_Name)
    props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
    props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")

    val Kafka_Consumer=new KafkaConsumer[String,String](props)
    Kafka_Consumer.subscribe (Arrays.asList(T_Name))
    while(true)
    {
      val Consumer_Record=Kafka_Consumer.poll(100) //ConsumerRecords Object
      //  val RecordList=Consumer_Record.toString
      for( i <- Consumer_Record)
      { //**This place is where Cannot resolve symbol for Foreach issue shows up for <- symbol.**
        println("Supplier id = "+String.valueOf(i.value().getID())+ "Supplier name = " +i.value().getID())
      }
    }
  }
}

Я использовал символ <- во многих примерах, прежде чем он работал. Я подумал, что это проблема с Intelliji, и перезапустил ее. Думаю, проблема в том, что объект приведен к другому типу. </p>

Ответы [ 2 ]

1 голос
/ 30 апреля 2019
  Consumer_Record.forEach(i => {
    println("Supplier id = "+String.valueOf(i.value().getID())+ "Supplier name = " +i.value().getID())
  })

отлично работает для меня.

За исключением того, что String не имеет getID() метода.

Вы можете использовать for(i <- Consumer_Record.asScala), если хотите синтаксис for,но вы должны добавить import scala.collection.JavaConverters._.

0 голосов
/ 15 мая 2019
val Kafka_Consumer=new KafkaConsumer[String,String](props)

Kafka_Consumer.subscribe(Arrays.asList(T_Name))

while(true) {

  val Consumer_Record=Kafka_Consumer.poll(100) //ConsumerRecords Object

  for( i <- Consumer_Record.asScala) {
    println("Supplier id = "+String.valueOf(i.value())+ " Supplier name = " +i.key())
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...