有没有一种方法可以发送包含在 Spring Integration FTP 中收到的所有文件(作为 Zip)的邮件,而不是根据收到的消息单独发送文件

问题描述 投票:0回答:0

我有一个基于 Spring Integration FTP 的 Spring Boot 应用程序,我可以在其中下载/上传文件。

我需要发送通过邮件收到的文件(作为 ZIP),但问题是,我只能对收到的文件的每条消息执行此操作,这意味着如果我收到 100 个文件,电子邮件收件人将收到 100 封电子邮件。这是因为 Spring Integration 一个接一个地处理消息。

我需要一种方法来聚合每次投票收到的文件并发送给收件人,而不是一个接一个地发送文件。

我试图想出一些想法,例如:

  1. 在收到文件时将收到的文件移动到临时位置,检查投票何时完成,将文件压缩到此临时位置,然后将它们发送给收件人。
  2. 了解如何知道每次投票收到的文件。

有人可以建议我如何实现这个:

public IntegrationFlow createIntFlow(MessageDirectory directory, ConcurrentMetadataStore metadataStore) {
        var directoryName = directory.getDirectoryName();

        var integrationFlowBuilder = IntegrationFlows
                .from(getInboundAdapter(directory, metadataStore),
                        e -> e.id(directoryName + "-PerPoller")
                                .autoStartup(true)
                                .poller(Pollers
                                        .cron(directory.getSchedule())
                                        .taskExecutor(simpleAsyncTaskExecutor)
                                        .errorChannel("errorChannel")
                                        .maxMessagesPerPoll(-1)))
                .log()
         

        **integrationFlowBuilder.publishSubscribeChannel(s -> {
           s.subscribe(sf -> sf.handle(c -> emailEmitter.createFileEvent(directory, c.getPayload().toString())));**
       });

            });
        }
        return integrationFlowBuilder.get();
    }```
spring-boot spring-integration spring-integration-dsl spring-integration-sftp spring-integration-ftp
© www.soinside.com 2019 - 2024. All rights reserved.