package com.tenble.flink.streaming.springboot; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.task.SimpleAsyncTaskExecutor; import org.springframework.core.task.TaskExecutor; @Configuration @EnableConfigurationProperties(FlinkProperties.class) public class FlinkAutoConfiguration { @Bean FlinkExecutor flinkExecutor(ApplicationContext appCtx, TaskExecutor taskExecutor, FlinkProperties flinkProperties, StreamExecutionEnvironment flinkEnvironment) { return new FlinkExecutor(appCtx, taskExecutor, flinkProperties, flinkEnvironment); } @Bean("taskExecutor") TaskExecutor taskExecutor() { return new SimpleAsyncTaskExecutor(); } @Bean("flinkEnvironment") StreamExecutionEnvironment getFlinkEnvironment(FlinkProperties flinkProperties) { long maxBytes = flinkProperties.getMaxClientRestRequestSizeBytes(); org.apache.flink.configuration.Configuration config = new org.apache.flink.configuration.Configuration(); config.setString("rest.address", flinkProperties.getJobManagerUrl()); config.setInteger("rest.port", flinkProperties.getJobManagerPort()); config.setLong("rest.client.max-content-length", maxBytes); config.setLong("rest.server.max-content-length", maxBytes); config.setString("akka.framesize", maxBytes + "b"); return StreamExecutionEnvironment.createRemoteEnvironment( flinkProperties.getJobManagerUrl(), flinkProperties.getJobManagerPort(), config, flinkProperties.getRemoteEnvJarFiles().stream().toArray(String[]::new)); } }