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

}

相关推荐
用户37215742613517 分钟前
Java 将一个 PPT 文档拆分为多个文件
java
阿里云大数据AI技术2 小时前
Flink Forward Asia 2026 深圳启幕:Agentic Streaming for AI,开启实时智能新范式
大数据·flink
人活一口气15 小时前
Spring Boot与AIGC的完美结合:从零搭建智能内容生成平台
java·spring boot·aigc
像我这样帅的人丶你还17 小时前
Java 后端详解(三):全局异常处理与 JPA 数据库映射
java·后端
NE_STOP18 小时前
vibe Coding -- 小项目实战
java
未秃头的程序猿1 天前
Java 26正式发布!这3个新特性,让代码量直接减半
java·后端·面试
用户298698530141 天前
Word 文档文本查找与替换的 Java 实现方案
java·后端
阿哉1 天前
Nacos 服务发现源码:藏在背后的两套事件机制,90%的人只讲了一半
java
咖啡八杯1 天前
GoF设计模式——命令模式
java·设计模式·架构
AI人工智能_电脑小能手1 天前
【大白话说Java面试题 第125题】【并发篇】第25题:说说 Java 线程的中断机制
java·后端·面试