小编Mia*_*Mia的帖子

从 Spring 批处理器调用 Async REST api

我写了一个处理列表列表的 spring 批处理作业。

Reader 返回列表列表。Processor 处理每个 ListItem 并返回处理过的 List。Writer 从 List of List 向 DB 和 sftp 写入内容。

我有一个用例,我从 Spring 批处理器调用 Async REST api。在 ListenableFuture 响应中,我实现了 LitenableFutureCallback 来处理成功和失败,这按预期工作,但在异步调用返回某些内容之前,ItemProcessor 不会等待来自异步 API 的回调并将对象(列表)返回给编写器。

我不确定如何实现和处理来自 ItemProcessor 的异步调用。

我确实读过 AsyncItemProcessor 和 AsyncItemWriter,但我不确定在这种情况下是否应该使用它。

我还想过在 AsyncRestTemplate 的 ListenableFuture 响应上调用 get(),但根据文档,它会阻塞当前线程,直到它收到响应。

我正在寻求有关如何实现这一点的帮助。下面的代码片段:

处理器:

public class MailDocumentProcessor implements ItemProcessor<List<MailingDocsEntity>, List<MailingDocsEntity>> {

... Initialization code

@Override
public List<MailingDocsEntity> process(List<MailingDocsEntity> documentsList) throws Exception {
    logger.info("Entering MailingDocsEntity processor");


    List<MailingDocsEntity> synchronizedList = Collections.synchronizedList(documentsList);


    for (MailingDocsEntity mailingDocsEntity : synchronizedList) {
        System.out.println("Reading Mailing id: …
Run Code Online (Sandbox Code Playgroud)

java spring spring-batch asyncresttemplate

7
推荐指数
1
解决办法
9344
查看次数

标签 统计

asyncresttemplate ×1

java ×1

spring ×1

spring-batch ×1