传入 JMS 消息的事务同步未激活
Transaction synchronization not active for incoming JMS message
我正在使用 Apache Camel 向我的 Java 服务发送消息。我一直在消费者路线上保持 transacted=true
。我还需要发送有关成功处理 JMS 消息的电子邮件。
我正在使用以下代码注册同步并仅在事务提交后发送电子邮件。
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter(){
@Override
public void afterCommit(){
sendMail(mailBody);
}
});
问题: 来自 Camel 的传入交易未同步,我得到
java.lang.IllegalStateException: Transaction synchronization is not active
我尝试调用 transactionsynchronizationmanager.initsynchronization()
- 我没有收到任何异常,但从未调用 afterCommit()
方法。
transactionsynchronizationmanager.initsynchronization();
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter(){
@Override
public void afterCommit(){
sendMail(mailBody); //never called
}
});
当通过 spring mvc 控制器(通过 Spring 事务)收到请求时,相同的代码正在运行。
您可能需要在路线上开启交易以启用 spring 交易。 JMS 端点上的选项 transacted=true
不是 spring-事务,但它仅用于将 JMS 确认模式设置为事务处理。他们不一样。
因此,在您的 Camel 路线中,还要设置 spring 交易,例如
from jms
transacted
在 Camel 文档中查看更多详细信息:http://camel.apache.org/transactional-client.html 如果你有一本 Camel in Action 书(第一版或第二版),那么它有一个完整的章节专门介绍交易。
我正在使用 Apache Camel 向我的 Java 服务发送消息。我一直在消费者路线上保持 transacted=true
。我还需要发送有关成功处理 JMS 消息的电子邮件。
我正在使用以下代码注册同步并仅在事务提交后发送电子邮件。
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter(){
@Override
public void afterCommit(){
sendMail(mailBody);
}
});
问题: 来自 Camel 的传入交易未同步,我得到
java.lang.IllegalStateException: Transaction synchronization is not active
我尝试调用 transactionsynchronizationmanager.initsynchronization()
- 我没有收到任何异常,但从未调用 afterCommit()
方法。
transactionsynchronizationmanager.initsynchronization();
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter(){
@Override
public void afterCommit(){
sendMail(mailBody); //never called
}
});
当通过 spring mvc 控制器(通过 Spring 事务)收到请求时,相同的代码正在运行。
您可能需要在路线上开启交易以启用 spring 交易。 JMS 端点上的选项 transacted=true
不是 spring-事务,但它仅用于将 JMS 确认模式设置为事务处理。他们不一样。
因此,在您的 Camel 路线中,还要设置 spring 交易,例如
from jms
transacted
在 Camel 文档中查看更多详细信息:http://camel.apache.org/transactional-client.html 如果你有一本 Camel in Action 书(第一版或第二版),那么它有一个完整的章节专门介绍交易。