flink接入spring体系
2026/6/6 20:45:57 网站建设 项目流程

背景

flink由于是job-manager加task-manager的结构,接入spring时需要有一些注意事项,本文列举一下关键点

关键事项

注意的是SpringApplicationContext要保证进程单例, 不要在算子的open()方法中创建SpringApplicationContext, 否则在并行执行算子时会导致重复创建SpringApplicationContext,并行执行算子对于flink来说可以是单进程中每个线程执行不同的算子,达到并行的目的,这种就会导致重复创建的问题,当然也可能不同的进程执行不同的算子,这种情况就没有问题

具体事项

1.创建一个静态spring容器的静态类

public SpringApplicationHelper {

private static volatile ApplicationContext applicationContext; public static ApplicationContext getApplicationContext() { if (applicationContext == null) { synchronized (SpringApplicationHelper.class) { if (applicationContext == null) { applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); } } } return applicationContext; }

}
2.在每个算子的入口类open方法中获取bean对象,例如SinkFunction里面
public void open(Configuration parameters) throws Exception {
ApplicationContext applicationContext = SpringApplicationHelper.getApplicationContext();
cityMapper = applicationContext.getBean(“cityDao”, CityMapper.class);
}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询