Java 如何通过REST调用将列表传递给Spring Batch ItemReader

Java 如何通过REST调用将列表传递给Spring Batch ItemReader,java,spring,rest,spring-batch,Java,Spring,Rest,Spring Batch,我正在研究一个REST方法,它将使用SpringBatch执行一个作业 我有一份简单的工作 <job id="myIndexJob" xmlns="http://www.springframework.org/schema/batch"> <step id="step1"> <tasklet> <chunk reader="myIndexItemReader" processor="myIndexItemP

我正在研究一个REST方法,它将使用SpringBatch执行一个作业

我有一份简单的工作

<job id="myIndexJob" xmlns="http://www.springframework.org/schema/batch">
    <step id="step1">
        <tasklet>
            <chunk reader="myIndexItemReader" processor="myIndexItemProcessor" writer="myIndexItemWriter" commit-interval="1" />
        </tasklet>
    </step>
</job>
但我只是不知道如何将
myList
传递给
myIndexItemReader

到目前为止,我可以通过创建一个
RepeatTemplate
并在回调中调用
iterate
来实现这一点,但是作业
chunk
看起来更干净


有人有什么想法或建议吗?谢谢/w

您可以将查询作为作业参数传递,但必须小心,因为字符串作业参数有一个有限长度(250)(look)。
如果这是一个限制,您可以像这样预编译属性文件:

查询.属性

query1=<query string 1>
query2=<query string 2>
query3=<query string 3>
queryn=<query string n>
依此类推,以便您可以从列表中选择查询。
使用一个或一个普通的读卡器/进程/写入器(作为第一步),您可以处理您的工作参数,并使用REST创建
列表

作业参数可使用spEL look-about获得。


我希望我说得很清楚,英语不是我的母语。

您可以将查询作为作业参数传递,但必须小心,因为字符串作业参数的长度(250)(外观)是有限的。
如果这是一个限制,您可以像这样预编译属性文件:

查询.属性

query1=<query string 1>
query2=<query string 2>
query3=<query string 3>
queryn=<query string n>
依此类推,以便您可以从列表中选择查询。
使用一个或一个普通的读卡器/进程/写入器(作为第一步),您可以处理您的工作参数,并使用REST创建
列表

作业参数可使用spEL look-about获得。


我希望我说得很清楚,英语不是我的母语。

我采取了另一种方法,根据REST标准将信息存储在数据库表中。然后,
ItemReader
读取该表,并在每次运行后将其清除。

我采用了另一种方法,并根据REST标准将信息存储在数据库表中。然后,
ItemReader
读取表格,并在每次运行后将其清除。

能否将查询字符串作为作业参数传递给批处理作业,然后让批处理作业读取器使用查询创建列表?作业调用之间的查询是否相同,也可能不同?@bellabax它们可能相同,也可能不同,但此调用可能不同很少会发生。@FGreg我没有考虑工作参数。读者很容易理解吗?我没有读过。你能将查询字符串作为作业参数传递给批处理作业,然后让批处理作业读取器使用该查询创建列表吗?作业调用之间的查询是相同的还是不同的?@bellabax它们可以相同也可以不同,但这个调用可能很少发生。@FGreg我没想过作业参数。读者很容易理解吗?我还没读过这方面的文章。
queriesIdsCount (integer): number of queries (0..n)
queryId0 (string): identifier of query in queries.properties file (ex: query2)
queryId1 (string): (ex. query3)
queryIdn (string): (ex. query1)