不为sftp出站适配器调用错误处理程序

时间:2015-04-27 18:12:38

标签: spring spring-integration

我希望能够在将文件上传到sftp服务器时捕获int-sftp:outbound-channel-adapter引发的任何异常。我希望通过简单地指定int:service-activator来使用errorChannel作为输入,我将能够捕获我的sftp集成流抛出的任何和所有异常。似乎并非如此。我通过尝试写入一条我无法访问的路径来模拟异常,并抛出异常但未传递给服务激活器。

<int:channel id="input" />

<int-sftp:outbound-channel-adapter
    session-factory="sftpSessionFactory" channel="input"
    remote-directory-expression="headers['remote_dir']"
    remote-filename-generator-expression="headers['remote_file_name']" />

<int:service-activator input-channel="errorChannel">
    <bean
        class="...ErrorHandler" />
</int:service-activator>
org.springframework.messaging.MessageDeliveryException: Error handling message for file [String payload -> sftp.txt]; nested exception is org.springframework.messaging.MessagingException: Failed to write to '/sftp.txt.writing' while uploading the file; nested exception is org.springframework.core.NestedIOException: failed to write file; nested exception is 3: Permission denied

此外,我注意到有些人正在使用sftp:request-handler-advice-chain来处理错误。这是处理sftp错误的更合适(和功能)方式。

1 个答案:

答案 0 :(得分:0)

您需要展示启动流程的内容。即发布到input的内容,通常这是某种门户。

通常,您会在该组件上放置error-channel并处理错误流中的异常 - 消息为ErrorMessage,其中包含causefailedMessage属性。< / p>