将流作为参数传递给作业 [英] Passing stream to job as parameter

查看:30
本文介绍了将流作为参数传递给作业的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有办法在通过作业启动器启动作业时传递流,类似于传递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)在ItemReadersetResource方法中使用此静电地图(如您上一个问题所述)

@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旁边时,此解决方案才有效。

这篇关于将流作为参数传递给作业的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆