在学习尚硅谷的代码时,在虚拟机用kafka创建生产者,发现在生产者内输入内容时,Idea里收不到消息
创建kafka生产者命令如下,采用broker和bootstrap命令方式均可(在kafka安装包目录下)
bin/kafka-console-producer.sh --broker-list master:9092 --topic clicks
bin/kafka-console-producer.sh --bootstrap-server master:9092 --topic clicks
Idea里的Flink代码如下
package com.atguigu.chapter05
import org.apache.flink.api.common.serialization.SimpleStringSchema
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer
import java.util.Properties
object SourceKafkaTest {
def main(args: Array[String]): Unit = {
val env = StreamExecutionEnvironment.getExecutionEnvironment
env.setParallelism(1)
//用Properties保存kafka连接的相关配置
val properties = new Properties()
properties.setProperty("bootstrap.servers","master:9092")
properties.setProperty("group.id","test-consumer-group")
val stream:DataStream[String] = env.addSource(new FlinkKafkaConsumer[String]("clicks", new SimpleStringSchema(), properties))
stream.print()
env.execute()
}
}
经排查,代码里的group.id是kafka消费者才有的模块,只要把这一行代码注释即可接收到消息
//properties.setProperty("group.id","test-consumer-group")
注释后Idea里运行代码即可成功收到消息