1、示例环境
- zookeeper-3.4.9
- kafka_2.11
- Java_1.8(java 8/11)
- Flink1.10
KafKa安装启动可参考文章 Windows10搭建Kafka开发环境
2、创建一个Topic名为“test20201217”的主题
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test20201217
3、创建producer(生产者),生产主题的消息
kafka-console-producer.bat --broker-list localhost:9092 --topic test20201217
4、创建consumer(消费者),消费主题消息
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test20201217
5、编写Flink从kafka消息队列读取数据代码
5.1、工程中添加pom.xml依赖
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka-0.11_2.12</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-statebackend-rocksdb_2.12</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner_2.12</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner-blink_2.12</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.12</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-clients_2.12</artifactId>
<version>1.10.1</version>
</dependency>
5.2、编写代码
public static void main(String[] args) throws Exception {
// 创建流处理的执行环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// 配置KafKa
//配置KafKa和Zookeeper的ip和端口
Properties properties = new Properties();
properties.setProperty("bootstrap.servers", "localhost:9092");
properties.setProperty("zookeeper.connect", "localhost:2181");
properties.setProperty("group.id", "consumer-group");
//将kafka和zookeeper配置信息加载到Flink的执行环境当中StreamExecutionEnvironment
FlinkKafkaConsumer011<String> myConsumer = new FlinkKafkaConsumer011<String>("test20201217", new SimpleStringSchema(),
properties);
//添加数据源,此处选用数据流的方式,将KafKa中的数据转换成Flink的DataStream类型
DataStream<String> stream = env.addSource(myConsumer);
//打印输出
stream.print();
//执行Job,Flink执行环境必须要有job的执行步骤,而以上的整个过程就是一个Job
env.execute("kafka sink test");
}
在idea启动main函数
生产者命令行窗口中任意输入内容,回车 。在IDEA的控制台打印kafka消费信息