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 への接続がない) の場合、エラーは 1 つだけです (リストの最初のメッセージのペイロード)。すべてのメッセージを集約するためのアドバイスはどこに置くべきですか?