0
我有一個使用DefaultMessageListener容器的彈簧JMS彈簧引導應用程序。我正在使用Atomikos進行事務管理。 在例外情況下,消息隊列回滾工作正常,消息確實移出隊列,但數據庫更新不回滾。我在DefaultMessageContainerBean上設置了自動配置的JtaTransactionManager。是否有任何其他配置需要在這裏獲得真正的全球交易管理。我正在使用我的Batis數據庫。Atomikos交易管理彈簧引導/彈簧卡紙
public class CusListener implements MessageListener{
public void onMessage(Message message) {
//Database call
catch (Exception ex) {
throw (new RuntimeException());
}
}
}
@Configuration
public class ListenerContainer{
@Bean
public DefaultMessageListenerContainer defaultMessageListenerContainer(ConnectionFactory queueConnectionFactory,MQQueue queue, MessageListener listener,
JtaTransactionManager jtaTransactionManager) {
DefaultMessageListenerContainer defaultMessageListenerContainer =
new DefaultMessageListenerContainer();
defaultMessageListenerContainer.setConnectionFactory(queueConnectionFactory);
defaultMessageListenerContainer.setDestination(queue);
defaultMessageListenerContainer.setMessageListener(listerner);
defaultMessageListenerContainer.setTransactionManager(jtaTransactionManager);
defaultMessageListenerContainer.setSessionTransacted(true);
defaultMessageListenerContainer.setConcurrency("3-10");
return defaultMessageListenerContainer;
}
//other beans declaration passed in the method above
}
@Configuration
public class PlanListenerSqlSessFac {
@Bean(name="sqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") NMCryptoDataSourceWrapper dataSource) throws Exception {
}
@Bean(name="driverManagerDataSource")
public DriverManagerDataSource driverManagerDataSource() {
DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
return driverManagerDataSource;
}
}
很難說沒有看代碼就是怎麼回事。 –
下面的JMS anb數據庫交互代碼需要相當多的標準bean: - – Atul
添加了帶有問題的代碼。 – Atul