ありがとうございます。アドバイスありがとうございます。 伝説のカレーさんの仰る通り、@Transactionalの使い方が間違って?いました。 >ググったところでは、@Transactionalがつけられたメソッドはそのメソッドが呼ばれたときに >トランザクションが開始され、例外が投げられたらロールバックされるって感じですね mqServiceとdbServiceの@Transactionalを排除し、もう一つ中間にServiceを配置し、これに@Transactionalを付与する事で @の処理もロールバックされました。 ●Service0 @Service public class TestService { @Autowired private MqService mqService; @Autowired private DbService dbService; @Transactional public void insert(Object requestInfo) throws RuntimeException { try { // @DB登録 String[] params = {form.getName(), form.getAge()}; dbService.insert(params); // AMQ送信 mqService.execute(form); } catch (Exception e) { throw new RuntimeException(e); } } } ただ、検証時に気付いたのですが、DB側のAutoCommit設定もfalseにしないとコミットされてしまう様でした。 正確にはSpring側のコネクション管理(プール等)なので、DB側では無いのですが。。 DBのトランザクションはロールバックできましたが、MQ送信の方はロールバックされませんでした。 質問の趣旨とずれてしまいますが、MQ側のコネクション管理でもAutoCommit設定はありますでしょうか? Gatewayで乗せてますが、送信自体はSpringのJmsTemplateを使用しています。
- Child Tree -