Я использую java dsl для настройки исходящего потока sfp.
Шлюз:
@MessagingGateway
public interface SftpGateway {
@Gateway(requestChannel = "sftp-channel")
void sendFiles(List<Message> messages);
}
Конфиг:
@Bean
public IntegrationFlow sftpFlow(DefaultSftpSessionFactory sftpSessionFactory) {
return IntegrationFlows
.from("sftp-channel")
.split()
.handle(Sftp.outboundAdapter(sftpSessionFactory, FileExistsMode.REPLACE)
.useTemporaryFileName(false)
.remoteDirectory(REMOTE_DIR_TO_CREATE).autoCreateDirectory(true)).get();
}
@Bean
public DefaultSftpSessionFactory sftpSessionFactory() {
...
}
Как я могу настроить поток, чтобы мой шлюз отвечал сообщениями, которые были неудачными? Другими словами, я хочу, чтобы мой шлюз мог возвращать список неудачных сообщений, а не недействительных.
Я отметил шлюз с помощью @MessagingGateway (errorChannel = "errorChannel")
и написал канал ошибки
@Bean
public IntegrationFlow errorFlow() {
return IntegrationFlows.from("errorChannel").handle(new GenericHandler<MessagingException>() {
public Message handle(MessagingException payload, Map headers) {
System.out.println(payload.getFailedMessage().getHeaders());
return payload.getFailedMessage();
}
})
.get();
}
@Bean
public MessageChannel errorChannel() {
return MessageChannels.direct().get();
}
и в случае некоторых ошибок (например, при отсутствии подключения к SFTP) я получаю только одну ошибку (полезная нагрузка первого сообщения в списке). Куда мне поместить совет, чтобы собрать все сообщения?