我有一个Spring Integration流,它使用Jpa.inboundAdapter()作为源,在transform中操作读取的实体,最后使用Jpa.outboundAdapter再次存储它们。
但是,在持久化期间,可能会发生异常(唯一约束冲突)。在这种情况下,流会“挂起”,因为它以指定的顺序从源读取,立即触发相同的顺序。
如何正确地进行错误处理,以标记或跳过从源代码读取的“坏”实体?
流程:
IntegrationFlows
.from(
Jpa
.inboundAdapter(entityMaanger)
.entityClass(...)
.nameqQuery(...)
.get()
)
.split()
.transform( ..)
.handle(
Jpa
.outboundAdapter(entityManager)
.entityClass(...)
.persistMode(MERGER)
.flush(true)
.get(),
e -> e.transactional())
)
);
1条答案
按热度按时间yc0p9oo01#
我建议您将
transactional()
移动到该Jpa.inboundAdapter(entityMaanger)
的源轮询通道适配器的poller()
配置。现在看起来你依赖于默认的poller(可能是Sping Boot 自动配置的),但是你需要在
from()
上有第二个arg: