本文介绍了将流作为参数传递给作业的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否有办法在通过作业启动器启动作业时传递流,类似于传递jobParameters?
我有一个单独的文件获取服务,然后我想启动批处理作业来加载它。
代码场景:
考虑这个sample。此处定义了作业,但实际启动器驻留在依赖项underneath中。
因此,在sample中,我添加了一个控制器,它读取用户的输入文件,然后触发sample中定义的示例作业,该示例作业由underneath的joblauncher.run运行。我在考虑将此文件流直接传递给作业的读取器,而不是将其写入外部磁盘并读取读取器的setSeResource
推荐答案看过您提供的示例代码后,我认为您可以这样做:
1)在SimpleJobConfiguration类中声明静电哈希图。
public static Map<String, Object> customStorage = new HashMap<String, Object>();2)从您的服务填充此地图
SimpleJobConfiguration.customStorage.put("key", yourStream);3)在ItemReader的setResource方法中使用此静电地图(如您上一个问题所述)
@Override public void setResource(Resource resource) { // Get your stream from the static map Byte[] stream = (Byte[]) SimpleJobConfiguration.customStorage.get("key"); // Convert byte array to input stream InputStream is = new ByteArrayInputStream(stream); // Create springbatch input stream resource InputStreamResource res = new InputStreamResource(is); // Set resource super.setResource(res); }仅当您的服务位于jobLauncher旁边时,此解决方案才有效。
更多推荐
将流作为参数传递给作业
发布评论