考虑到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));
有时会发生乐观锁定异常。 我不明白为什么会这样,我认为它是顺序处理
因为我使用直接渠道:
MessageChannels.direct()
.datatype(AnotherLUW.class)
.get();
MessageChannels.direct()
.datatype(RedemptionLUW.class)
.get();
并且在日志中,我只能找到一个线程(典型的SI DefaultMessageListenerContainer-1 )
我有使用JMS代理重新传递的errorHandler,但是日志被异常污染
知道为什么会这样吗?
答案 0 :(得分:0)
好吧,既然你的进程是从DefaultMessageListenerContainer
启动的,那么对你来说这可能是一个事实,即某些消息在那里处理不同的线程。因此并行。
是的,它是顺序进程,但是当所有内容都在同一个线程中完成时。
考虑使用DefaultLockRegistry
来获取对资源的相互访问权限。我猜你的情况是JPA。