首页 文章

直接消息通道,但仍然获得乐观的锁定异常

提问于
浏览
1

给定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 回答

  • 0

    好吧,既然您的进程是从 DefaultMessageListenerContainer 开始的,那么对您来说这可能是一个事实,即某些消息在那里处理不同的线程 . 因此并行 .

    是的,它是 sequential process ,但是当一切都在同一个线程中完成时 .

    考虑使用 DefaultLockRegistry 来获取对资源的相互访问权限 . 我想你的情况是JPA .

相关问题