Для источника сообщения чтения файла входящий адаптер и преобразователь с аннотациями настроены, как показано ниже.
@Bean
@InboundChannelAdapter(autoStartup = "false", value = "incomingchannel", poller = @Poller("custompoller"))
public MessageSource<File> fileReadingMessageSource() {
}
@Transformer(inputChannel = "incomingchannel", outputChannel = "jobLaunchChannel")
public JobLaunchRequest toRequest(Message<File> message) throws Exception {
}
Теперь я хочу изменить Transformer, чтобы он ссылался на канал ответа исходящего шлюза, т.е. который перемещает файлы из одного каталога в другой каталог, то есть перемещает файл из каталога incomingchannel в другой каталог и обрабатывает или преобразует файл или выполняет некоторые проверки
<file:outbound-gateway id="mover" request-channel="incomingchannel" reply-channel="newdirectory" directory="<<path to new directory file to be moved" delete-source-files="true"/>
Кто-нибудь преобразовал вышеуказанную конфигурацию XML в конфигурации аннотаций или какие-либо идеи?
После настройки аннотации мне придется изменить входной канал трансформатора, чтобы он ссылался на канал нового каталога, то есть который является каналом ответа шлюза обмена сообщениями ...
Заранее благодарим за любую помощь или предложения по этому поводу
--- Обновление 1 после тестирования фрагмента, предоставленного в ссылке Артемом
@Bean
@ServiceActivator(inputChannel = "incomingchannel")
public MessageHandler fileWritingMessageHandler() {
FileWritingMessageHandler handler = new FileWritingMessageHandler(new File(newdirectorypath));
handler.setFileExistsMode(FileExistsMode.APPEND);
handler.setDeleteSourceFiles(true);
return handler;
}
@MessagingGateway(defaultRequestChannel = "incomingchannel", defaultReplyChannel = "newdirectorychannel")
public interface MyGateway {
void writeToFile(@Header(FileHeaders.FILENAME) String fileName, @Header(FileHeaders.FILENAME) File directory,
String data);
}
Но возникли две проблемы
Входящий адаптер пытается опросить каталог также как файл (используется рекурсивный сканер каталогов) - как убедиться, что каталог не опрашивается как файл
вложенное исключение
org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available, failedMessage=GenericMessage [payload=C
<file:outbound-gateway
- этоFileWritingMessageHandler
в Java. См. В документации: docs.spring.io/spring-integration/docs/5.3.0.M4/reference/html/ - person Artem Bilan   schedule 22.04.2020FileWritingMessageHandler
между вашими@InboundChannelAdapter
иJobLaunchRequest @Transformer
? - person Artem Bilan   schedule 22.04.2020