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

}

相关推荐
丘山一郎5 小时前
Spring 中的IOC控制反转 和DI依赖注入
java·后端·spring
码视野5 小时前
基于 Spring Boot + Vue3 的【大学英语四六级 (CET-4/6) 作文智能评分与句式润色系统】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端·vue3
MetaLite5 小时前
Spring-AOP自调用为什么失效-AopContext真能解决吗
java·后端·spring
大模型码小白5 小时前
AI 对话流性能调优:万级消息的虚拟滚动落地
java·大数据·前端·javascript·人工智能·算法·机器学习
许彰午5 小时前
14-字段级SM4加密与SM2签名
java·低代码·架构
数智启示录5 小时前
Flink CDC 机制精讲(二):Checkpoint Barrier 如何形成一致快照 【面试宝典】
大数据·经验分享·面试·flink
许彰午7 小时前
13-describe元数据输出
java·低代码·架构·状态模式
用户3721574261358 小时前
Java 设置 Word 文档编辑限制并允许指定区域编辑
java
宠友信息8 小时前
社区类源码开发实践中的仿小红书系统技术要点分析
java·spring boot·redis·mysql·uni-app·vue·内容运营
用户3721574261358 小时前
Java 设置 PDF 表单域只读或扁平化
java