flink接入spring体系

背景

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);

}

相关推荐
biubiubiu07061 小时前
自定义starter 可以导入SpringBoot直接使用
java·spring boot·spring
TFHoney1 小时前
当 AI 真正走进你的终端:Claude Code 使用指南
java·人工智能·ai编程
TeamDev1 小时前
JxBrowser 9.1.1 版本发布啦!
java·前端·chromium·混合应用·jxbrowser·嵌入式浏览器·浏览器控件
天行健,君子而铎1 小时前
自适应、全链路与智能识别——政务数据安全泛监测系统
java·网络·政务
小刘|1 小时前
SpringBoot整合LangChain4j实现流式AI对话
java·spring boot·langchain
迈巴赫车主2 小时前
蓝桥杯21241灯塔java
java·开发语言·数据结构·算法·职场和发展·蓝桥杯·动态规划
兰令水2 小时前
【agent第3篇】agent上下文+面经
java·大数据·数据库
木井巳2 小时前
【DFS解决floodfill算法】岛屿数量
java·算法·leetcode·深度优先
弹简特2 小时前
【Java项目-轻聊】08-用户管理模块-实现获取用户信息+头像上传+显示头像
java·开发语言·springboot