sfp送信フローを設定するには、java dslを使用しています。sftp応答チャネルを作成して、エラーメッセージを返信します。
ゲートウェイ:
@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() {
...
}
私は私のゲートウェイが失敗したメッセージに返信するためにフローを設定するにはどうすればよいですか? 言い換えれば、私のゲートウェイは、無効ではなく失敗したメッセージのリストを返すことができるようにしたい。
私は私が唯一の1を取得し @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への接続なし)を書きましたエラー(リスト内の最初のメッセージのペイロード)。 アドバイスを入れてすべてのメッセージを集計する必要はありますか?
アルテム、ご返信ありがとうございます! ExpressionEvaluatingRequestHandlerAdviceの例をいくつか教えてください。 – arctg
私は自分の質問を編集しました。 – arctg
このようなカスタムロジックには 'errorChannel'を使うのは良いことではありません。これはグローバルで、多くの他の非同期コンポーネントでデフォルトのエラーチャネルとして使用されています。http://docs.spring.io/spring-integration/reference/html/configuration.html#namespace-errorhandler –