为了账号安全,请及时绑定邮箱和手机立即绑定

从 Spring 批处理器调用 Async REST api

从 Spring 批处理器调用 Async REST api

狐的传说 2021-09-15 16:16:37
我写了一个处理列表列表的 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@Overridepublic 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: " + mailingDocsEntity.getMailingId());       ..code to get the file         //If the file is not a pdf convert it         String fileExtension = readFromSpResponse.getFileExtension();         String fileName = readFromSpResponse.getFileName();         byte[] fileBytes = readFromSpResponse.getByteArray();         try {             //Do checks to make sure PDF file is being sent             if (!"pdf".equalsIgnoreCase(fileExtension)) {                 //Only doc, docx and xlsx conversions are supported                     ...Building REquest object                     //make async call to pdf conversion service            pdfService.convertDocxToPdf(request, mailingDocsEntity);                 } else {                     logger.error("The file cannot be converted to a pdf.\n"                        );                 }             }         } 我原来的批处理作业是同步的,我正在转换为异步以加快处理速度。我确实尝试寻找类似的问题,但找不到足够的信息。任何指示或帮助都非常感谢。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信