baomidou / dynamic-datasource

dynamic datasource for springboot 多数据源 动态数据源 主从分离 读写分离 分布式事务
https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611
Apache License 2.0
4.76k stars 1.2k forks source link

同一个方法中,事务提交后执行发送MQ消息,如何实现? #577

Closed jackli0909 closed 1 year ago

jackli0909 commented 1 year ago

在spring的原生事务中,也可通过

TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {

      @Override
      public void afterCommit() { 
        // TODO do your afterCommit biz
        sentMq();
      }
    });

或者

  public void programmaticTransaction() {

    String data = transactionTemplate.execute(new TransactionCallback<String>() {

      @Override
      public String doInTransaction(TransactionStatus status ) {
        // TODO your biz
        return "data";
      }
    });

    sentMq();
  }

这两种方式实现事务提交后发送MQ消息, 但是本地多数据源使用@DSTransactional注解,如何实现事务提交后发送MQ 消息的逻辑? 望解疑惑!

huayanYu commented 1 year ago

不知道,建议你参考spring,改相关源码,提交PR.

ZPZP1 commented 1 year ago

除了这两种还可以和事件监听结合,指派我吧,周末加一下 @huayanYu

Qinghua-Zheng commented 1 year ago

今天刚好遇到这个问题,关注一下