我必须以事务方式处理一组按名称聚合的文件:只需假设我有如下名称的输入文件: A1, A2, B1, B2, C1, C2, ...
我需要将它们分组如下: [A1, A2], [B1, B2], [C1, C2]...
我用ftp inboundadapter、聚合器和我的定制处理器制作了一个公共事务链,除了一个细节之外,它工作得非常完美。
当处理列表失败时,回滚spel只处理触发异常的单个文件,而我希望处理它所属的文件列表的异常。
我基本上(认为)我需要的是这样的东西:
+--+ +--+ +--+ +--+ +--+ +--+ +------+ +------+ +------+
|A1| |A2| |B1| |B2| |C1| |C2| |aggregator| -> |A1, A2| |B1, B2| |C1, C2|
+--+ +--+ +--+ +--+ +--+ +--+ +------+ +------+ +------+
\-----------------------------/
transaction's scope
如果我只在聚合器之后启动事务,spel表达式将只看到列表消息而不是单个文件,对吗?
我不知道怎么做,是在不使用链中间的轮询器的情况下启动事务,这会引入延迟。
有什么提示吗?
谢谢您!
编辑:我已经解决了向处理句柄添加建议的问题,但我不能100%确定它是“正确”的解决方案
1条答案
按热度按时间gblwokeq1#
根据gary的建议,我采用了以下解决方案:
相关部分
c -> c.advice(processErrorAdvice())
我还配置了如下建议: