я использую следующую конфигурацию, чтобы скопировать файлы из одного каталога в другой каталог -Spring Integration: Файл функции копирования с задержкой
@Bean
public MessageChannel fileInputChannel() {
return new DirectChannel();
}
@Bean
@InboundChannelAdapter(value = "fileInputChannel", poller = @Poller(fixedDelay = "10000"))
public MessageSource<File> fileReadingMessageSource() {
FileReadingMessageSource source = new FileReadingMessageSource();
source.setDirectory(new File("C:/input_dir"));
source.setFilter(new RegexPatternFileListFilter(".*"));
return source;
}
@Bean
@ServiceActivator(inputChannel = "fileInputChannel")
public FileWritingMessageHandler handle() {
FileWritingMessageHandler handler = new FileWritingMessageHandler(new File("C:/Output_dir"));
handler.setDeleteSourceFiles(false);
handler.setExpectReply(false);
handler.setPreserveTimestamp(true);
handler.setAsync(true);
return handler;
}
Я ожидал, что:
- Если есть какие-либо изменения в любом исходном файле ИЛИ
- Если новый файл, созданный в исходном каталоге
обновленный или вновь созданный файл будет обновлен/создан в папке назначения в течение 10 секунд. Однако он занимает более 1 минуты и размер файла в КБ. Кроме того, исходные и целевые каталоги находятся на одной машине. Я не в состоянии определить, почему она занимает более 1 минуты, когда я установил @Poller времени 10 секунд
журналы -
[2017-01-31 10:33:04,943612]INFO [task-scheduler-3] (FileReadingMessageSource.java:367) - Created message: [GenericMessage [payload=C:/input_dir/file.170126.19, headers={timestamp=1485876784308, id=662aaf51-91e5-6f78-a2a6-997fc01b8b79}]]<br>
[2017-01-31 10:33:04,943612]DEBUG[task-scheduler-3] (AbstractPollingEndpoint.java:267) - Poll resulted in Message: GenericMessage [payload=C:/input_dir/file.170126.19, headers={timestamp=1485876784308, id=662aaf51-91e5-6f78-a2a6-997fc01b8b79}]<br>
[2017-01-31 10:33:04,943612]DEBUG[task-scheduler-3] (AbstractMessageChannel.java:411) - preSend on channel 'fileInputChannel', message: GenericMessage [payload=C:/input_dir/file.170126.19, headers={timestamp=1485876784308, id=662aaf51-91e5-6f78-a2a6-997fc01b8b79}]<br>
[2017-01-31 10:33:04,943612]DEBUG[task-scheduler-3] (AbstractMessageHandler.java:115) - handle received message: GenericMessage [payload=C:/input_dir/file.170126.19, headers={timestamp=1485876784308, id=662aaf51-91e5-6f78-a2a6-997fc01b8b79}]<br>
[2017-01-31 10:33:04,943618]DEBUG[task-scheduler-3] (AbstractMessageChannel.java:430) - postSend (sent=true) on channel 'fileInputChannel', message: GenericMessage [payload=C:/input_dir/file.170126.19, headers={timestamp=1485876784308, id=662aaf51-91e5-6f78-a2a6-997fc01b8b79}]<br>
[2017-01-31 10:33:14,953620]INFO [task-scheduler-4] (FileReadingMessageSource.java:367) - Created message: [GenericMessage [payload=C:/input_dir/file.170127.19, headers={timestamp=1485876794316, id=c05deaec-f863-fd7f-0b08-dd3534be81d7}]]<br>
[2017-01-31 10:33:14,953620]DEBUG[task-scheduler-4] (AbstractPollingEndpoint.java:267) - Poll resulted in Message: GenericMessage [payload=C:/input_dir/file.170127.19, headers={timestamp=1485876794316, id=c05deaec-f863-fd7f-0b08-dd3534be81d7}]<br>
[2017-01-31 10:33:14,953620]DEBUG[task-scheduler-4] (AbstractMessageChannel.java:411) - preSend on channel 'fileInputChannel', message: GenericMessage [payload=C:/input_dir/file.170127.19, headers={timestamp=1485876794316, id=c05deaec-f863-fd7f-0b08-dd3534be81d7}]<br>
[2017-01-31 10:33:14,953620]DEBUG[task-scheduler-4] (AbstractMessageHandler.java:115) - handle received message: GenericMessage [payload=C:/input_dir/file.170127.19, headers={timestamp=1485876794316, id=c05deaec-f863-fd7f-0b08-dd3534be81d7}]<br>
[2017-01-31 10:33:14,953626]DEBUG[task-scheduler-4] (AbstractMessageChannel.java:430) - postSend (sent=true) on channel 'fileInputChannel', message: GenericMessage [payload=C:/input_dir/file.170127.19, headers={timestamp=1485876794316, id=c05deaec-f863-fd7f-0b08-dd3534be81d7}]
Включите протоколирования DEBUG для o.s.i. –
Просто протестировал ваш случай использования на Windows. Файлы «путешествуют» от dir до dir именно в течение этих 10 секунд ... –
Спасибо, что посмотрели на это. Журналы DEBUG показывают, что между каждым файлом имеется интервал в 10 секунд. Поэтому, если у нас есть 1000 файлов в каталоге ввода и обновлены любые файлы, то возможно, что измененный файл будет отображаться на месте назначения через 10 * 1000 секунд. – Sushil