基础:
在我们收到消息后,成功和错误流程都很有效。但是,当我们遇到在生成邮件之前发生的错误(即无法连接到sftp服务器)时,我们就没有机会附加邮件头。
我一直在查看示例和文档,我找不到从MessagePublishingErrorHandler生成的错误消息中附加相同标头的好方法,而不会覆盖Poller上的错误处理程序,或者创建自定义错误每个入站集成的流程。我有什么选择?
这是其中一个配置的示例:
IntegrationFlows
.from(
Sftp.inboundAdapter(sessionFactory)
.autoCreateLocalDirectory(true)
.localDirectory(configProperties.getLocalDirectory())
.preserveTimestamp(true)
.remoteDirectory(configProperties.getRemoteDirectory()),
c -> c.poller(Pollers
.fixedRate(properties.getSftpInterval(), properties.getSftpIntervalUnit())
.errorHandler(errorHandler)) // custom error handler?
)
.enrichHeaders(
MapBuilder
.with("vendorName", "vendor1")
.get()
)
.channel("fileChannelHandler")
.get();
答案 0 :(得分:1)
是的 - 问题在于,使用轮询通道适配器,如果在MessageSource.receive()
中抛出异常,则还没有任何消息需要通过自定义标头进行增强。
框架目前不允许修改ErrorMessage
本身的标头(其原始异常作为此类异常的有效负载)。
一个解决方法(除了你的自定义EH)将在每个错误流上添加一个标题来识别源适配器。
将来,框架可以向ErrorMessage添加一个标头,其中包含通道适配器的id,因此可以在常见的错误流中识别源。
随意打开'改进'JIRA Issue我们会看看。