Spring文件集成Java配置

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

我想使用Spring集成来开发应用程序以进行以下操作

  1. 将文件轮询目录中的文件。
  2. 将文件复制到存档目录
  3. 处理文件并将路径添加到数据库。

我不确定如何配置它,我找不到任何好的文档。他们中的大多数是在xml中的配置,我想要java config。我有此代码,但这只是复制文件并删除源。我不知道如何处理来源。

 @Bean
    public MessageChannel fileInputChannel() {
        return new DirectChannel();
    }
    @Bean
    @InboundChannelAdapter(value = "fileInputChannel", poller = @Poller(fixedDelay = "1000"))
    public MessageSource<File> fileReadingMessageSource() {
        FileReadingMessageSource source = new FileReadingMessageSource();
        source.setDirectory(new File(INBOUND_PATH));
        source.setFilter(new SimplePatternFileListFilter("*.pdf"));

        source.setLoggingEnabled(true);
        return source;
    }


    @Bean
    @ServiceActivator(inputChannel = "fileInputChannel")
    public FileWritingMessageHandler fileWritingMessageHandler() {


        FileWritingMessageHandler fileWritingMessageHandler = new FileWritingMessageHandler(
                new File(OUTBOUND_PATH));
        fileWritingMessageHandler.setAutoCreateDirectory(true);
        fileWritingMessageHandler.setExpectReply(false);
        fileWritingMessageHandler.setDeleteSourceFiles(true);
        return fileWritingMessageHandler;
    }
spring-integration spring-integration-dsl
1个回答
0
投票
您的请求的某些解决方案可能是这样的:

fileInputChannel必须是具有您现有的PublishSubscribeChannel作为

    second订阅者的fileWritingMessageHandler()
  1. 您添加了第一个订阅者(@ServiceActivator)来处理该文件,并按照您所说的将其存储在DB中,这肯定是该文件之后的下一个@ServiceActivator
请参阅@Order注释和提及的@ServiceActivator,以确保您的订阅者以正确的顺序订阅。由于您确实要移动文件,因此在发送到FileWritingMessageHandler之前对其进行处理非常重要。
  • 此任务也可以使用Java DSL来完成,甚至它的代码可能要短得多。

    说,我想请您阅读以EIP Book开头的文档,以使自己熟悉集成概念和原理。

  • © www.soinside.com 2019 - 2024. All rights reserved.