Dict.CN 在线词典, 英语学习, 在线翻译 ------------- MyGitee 朱秋贵内科诊所 My腾云code

springboot+Flink 接收、处理数据20220919

 

1、pom.xml

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-java</artifactId>
    <version>1.10.0</version>
    <scope>provided</scope>
  </dependency>
  <dependency>
   <groupId>org.apache.flink</groupId>
   <artifactId>flink-streaming-java_2.11</artifactId>
   <version>1.10.0</version>
   <scope>provided</scope>
  </dependency>
  <dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.18.24</version>
  </dependency>
  <dependency>
   <groupId>org.apache.flink</groupId>
   <artifactId>flink-connector-kafka-0.10_2.11</artifactId>
   <version>1.10.0</version>
   <scope>provided</scope>
  </dependency> 
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
  </dependency>
</dependencies>


2、MySlink
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.functions.sink.RichSinkFunction;
import org.apache.kafka.common.config.Config;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

@Slf4j
class MySlink extends RichSinkFunction<String> {
  private AnnotationConfigApplicationContext context;
    public MySlink() {
      log.info("MySlink new");
    }

  @Override
  public void open(Configuration parameters) throws Exception {
    this.context=new AnnotationConfigApplicationContext(Config.class);
    log.info("MySlink open");
  }

  @Override
  public void invoke(String value, Context context) {
    log.info("调用了invoke方法"+value);
  }

  @Override
  public void close() throws Exception {
    context.close();
    log.info("MySlink close");
  }
}

 

3、Runner

import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class Runner implements CommandLineRunner {
  @Override
  public void run(String... args) throws Exception {
    StreamExecutionEnvironment environment=StreamExecutionEnvironment.getExecutionEnvironment();
    DataStream<String> stream=environment.addSource(new SourceFunction<String>() {
      @Override
      public void run(SourceContext<String> sourceContext) throws Exception {
        long c=0;
        while (true){
          sourceContext.collect("test"+c++);
          Thread.sleep(3000);
        }
      }

      @Override
      public void cancel() {

      }
    });


  stream.addSink(new MySlink());
  environment.execute("spring flink 20220919...........");


  }
}

 

4、Flink2034Application

@SpringBootApplication
public class Flink2034Application {

  public static void main(String[] args) {
    SpringApplication.run(Flink2034Application.class, args);
  }

}

 

 

 

 

 

posted @ 2022-09-19 17:46  cn2024  阅读(505)  评论(0编辑  收藏  举报