spring boot事务同步器

360 阅读1分钟

有些场景需要在事务完成后、完成前执行,可以使用待事务同步器进行,使用的方法很简单,代码如下。

1.这里演示的是事务完成后发送kafka消息。

2.目前来看其实在代码里,很多的操作是不应该影响本地事务的。如:调用第三方接口、发送mq消息。

3.当然也可以使用分布式事务框架来解决,具体还是要看使用的场景吧。

4.具体可以参考一下文章

blog.csdn.net/weixin_3898…

blog.csdn.net/avengerEug/…

TransactionSynchronizationManager


public void send(AssetsPassiveChangeResult passiveChange) {
    if (TransactionSynchronizationManager.isActualTransactionActive()) {
        TransactionSynchronizationManager.registerSynchronization(
            new TransactionSynchronizationAdapter() {
                @Override
                public void afterCommit() {
                    // 事务完成后发送
                    sendKafka(passiveChange);
                }
            });
    } else {
        sendKafka(passiveChange);
    }
}



  • [ 萱儿AXW ]