我正在轮询服务激活器的文件,使用PseudoTransactionManager将它们移动到已处理/失败的目录中。 如果/当移动失败时,我想记录它,包括文件名。
由于围绕流传递的信息是Message对象,我尝试将文件名丰富到其标题中,但是当我们为每个步骤创建它的副本时,除非我可以移动标题,否则这将无法工作 - 入站通道适配器和事务管理器之间的连接。
简化形式我现在的主流是:
因为我希望文件移动到已处理或失败的目录,所以还有第二个流程:
我认为这是因为事务管理器定义嵌套在xml中的通道适配器定义中。
如何通过此处的示例设置将此信息传递给日志记录通道适配器?
答案 0 :(得分:0)
交易内容只能访问原始邮件。您可以向轮询器添加error-channel
;默认错误通道(errorChannel
)是一个发布/订阅通道,并且有一个订阅它的日志通道适配器。
发生异常时,会将ErrorMessage
发送到错误通道(如果已配置);有效负载是MessagingException
,具有cause
和failedMessage
属性。 failedMessage
是失败发生时的消息。
默认错误流只会记录消息,以便您的"事务"将"承诺"。
相反,您需要自定义错误流程;记录你想要的东西,然后重新抛出原因和你的交易"将"回滚"。