我正在使用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,这是不正确的。 –
好的,也许你会将这个问题标记为回答 –