给定accountId和SomeLUW帐户,AnotherLUW(工程的逻辑单元),其中帐户在两个LUW中更新
当我尝试执行以下操作时:
SomeLUW luw1 = new SomeLUW(accountId);
messagingTemplate.send(channel1, new GenericMessage<>(luw1));
AnotherLUW luw2 = new AnotherLUW (accountId);
messagingTemplate.send(channel2, new GenericMessage<>(luw2));
有时,会发生乐观锁定异常 . 我不认为它是 sequential processing
因为我使用直接渠道:
MessageChannels.direct()
.datatype(AnotherLUW.class)
.get();
MessageChannels.direct()
.datatype(RedemptionLUW.class)
.get();
在日志中,我只能找到一个线程(典型的SI DefaultMessageListenerContainer-1 )
我有使用JMS代理重新传递的errorHandler,但是日志被异常污染了
知道为什么会这样吗?
1 回答
好吧,既然您的进程是从
DefaultMessageListenerContainer
开始的,那么对您来说这可能是一个事实,即某些消息在那里处理不同的线程 . 因此并行 .是的,它是 sequential process ,但是当一切都在同一个线程中完成时 .
考虑使用
DefaultLockRegistry
来获取对资源的相互访问权限 . 我想你的情况是JPA .