Spring Integration переместить файл в другую папку, а затем отправить на сервер sftp - PullRequest
0 голосов
/ 21 февраля 2019

Я хотел бы создать приложение, в котором я буду слушать папку с именем «input» для текстового файла, затем перемещать текстовый файл в «output» и отправлять его на сервер sftp.Вот мой код в Spring Integration.

@Bean
public IntegrationFlow textFileIntegration(@Value("${input.dir}") File in,
                                   @Value("${output.dir}") File out,
                                   MessageChannel sftpChannel) {

    return IntegrationFlows
            .from(Files.inboundAdapter(in)
                            .autoCreateDirectory(true)
                            .patternFilter("*.txt"),
                    sourcePollingChannelAdapterSpec ->
                            sourcePollingChannelAdapterSpec.poller(pollerFactory -> pollerFactory.fixedRate(1000)))
            //.transform(File.class, file -> service.process(file)) commented on purpose
            .handle(Files.outboundAdapter(out))
            .channel(sftpChannel)
            .get();
}

Теперь, когда я помещаю текстовый файл в каталог «input», этот файл затем успешно перемещается в каталог «output», но отправка на канал sftp donне работаетЯ попытался комментировать метод handle, и канал sftp будет работать.Я просто хочу сначала поместить файл в каталог, а затем отправить его в sftp.Я вижу функцию маршрутизации в Spring Integration DSL, но не уверен, что это именно то, что нужно использовать.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Для такого потока вы должны использовать Files.outboundGateway() вместо одностороннего Files.outboundAdapter().Проблема с последним в том, что он просто не выдает ответ для отправки на следующий канал.

Другая проблема в том, что FileWritingMessageHandler может выдавать ответ, когда он находится в режиме шлюз , поэтому он позволяет настроить setOutputChannel().

Я думаю,мы можем рассмотреть возможность отклонения такой конфигурации, если она не о Files.outboundGateway().

Пожалуйста, см. дополнительную информацию в Справочном руководстве: https://docs.spring.io/spring-integration/docs/current/reference/html/#file-writing-output-gateway

0 голосов
/ 21 февраля 2019

Файл HANDLER весной: D

Не уверен насчет моего ответа

<file:inbound-channel-adapter id="filesIn" directory="/inbound">
 <int:poller fixed-delay="1000"/>
  </file:inbound-channel-adapter>

<file:outbound-channel-adapter id="filesOut" directory="/outbound"/>

  <int:service-activator input-channel="filesIn"
                   output-channel="filesOut"
                   ref="handler"/>
...