我正在使用Apache Camel向我的Java服務發送消息。我在消費者路線上保留了transacted=true
。我還需要發送成功處理JMS消息的電子郵件。對於傳入的JMS消息,事務同步不活動
我正在使用下面的代碼來註冊同步並在事務提交後才發送電子郵件。
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter(){
@Override
public void afterCommit(){
sendMail(mailBody);
}
});
問題:從駱駝傳入事務是不同步的,我越來越
java.lang.IllegalStateException:交易同步不活躍
我打過電話transactionsynchronizationmanager.initsynchronization()
- 我沒有得到任何例外,但從未調用afterCommit()
方法。
transactionsynchronizationmanager.initsynchronization();
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter(){
@Override
public void afterCommit(){
sendMail(mailBody); //never called
}
});
當通過spring mvc控制器(通過Spring Transaction)收到請求時,相同的代碼正在工作。
非常感謝。在路由上設置transacted = true後,它正在工作。我實際上在JMSConfigutaion中設置了transacted = true,這是不正確的。 –
好的,也許你會將這個問題標記爲回答 –