Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring SFTP适配器正在跳过备用文件_Spring_Spring Boot_Spring Integration_Spring Integration Sftp - Fatal编程技术网

Spring SFTP适配器正在跳过备用文件

Spring SFTP适配器正在跳过备用文件,spring,spring-boot,spring-integration,spring-integration-sftp,Spring,Spring Boot,Spring Integration,Spring Integration Sftp,我有一个SFTP适配器,它可以从远程位置下载文件并进行转换。但是,它将跳过备用文件。i、 e如果SFTP中的主机文件是1.zip、2.zip、3.zip,那么它只处理1.zip和3.zip @Bean @Primary public IntegrationFlow sftpInboundFlow(){ ... .. SftpInboundChannelAdapterSpec messageSourceBuilder = ... .. IntegrationFlowBuilder flowB

我有一个SFTP适配器,它可以从远程位置下载文件并进行转换。但是,它将跳过备用文件。i、 e如果SFTP中的主机文件是1.zip、2.zip、3.zip,那么它只处理1.zip和3.zip

@Bean
@Primary
public IntegrationFlow sftpInboundFlow(){
...
..
 SftpInboundChannelAdapterSpec messageSourceBuilder = 
...
..

IntegrationFlowBuilder flowBuilder = IntegrationFlows
                .from(messageSourceBuilder, consumerSpec())
                .log(Level.INFO, m -> "INBOUND: " + m.getPayload() + " HEADERS: " + m.getHeaders()
                );


return flowBuilder.channel(INBOUND_CHANNEL).handle(new MessageHandler());

// Works fine if changed to 
// flowBuilder.channel(INBOUND_CHANNEL).get();
// 
}




    @Bean
    public IntegrationFlow uncompressionfileFlow() {

        UnZipTransformer unZipTransformer = new UnZipTransformer();

        IntegrationFlowBuilder flowBuilder = IntegrationFlows.from(INBOUND_CHANNEL).transform(unZipTransformer)
                .split(new UnZipAbstractMessageSplitter(prop1, prop2))
                .log(Level.INFO, m -> "OUTBOUND: " + m.getPayload() + " HEADERS: " + m.getHeaders())
                .enrichHeaders(h -> h.headerExpression(FileHeaders.ORIGINAL_FILE,
                        "payload.headers['" + FileHeaders.FILENAME + "']"));
        return flowBuilder.channel(OUTBOUND_CHANNEL).get();
    }

您所描述的内容与
DirectChannel
上的循环调度策略完全相关。根据您的配置,我们确实有两个订户使用同一个
入站\u频道

  • 频道(入站频道)。句柄(新MessageHandler())
  • from(入站信道)。transform(无ZipTransformer)
  • 我不确定您的目标是什么,但代码片段中的逻辑比从SFTP轮询文件并处理它们要复杂得多

    您应该修改到目前为止的内容,但这不是SFTP入站通道适配器问题,更像是同一直接通道上的两个竞争消费者。

    感谢将入站通道从
    DirectChannel
    更改为
    PublishSubscribeChannel
    解决了我的问题