Hello,
My requirement is to achieve ignite cache update operation and
database write operation in single transaction.
Right now I am trying to use JTA transaction management. I have created
below IgniteConfiguration using transactionConfiguration. But I am not
sure how to configure XAResource to this transaction manager.
I will be needing two XAResource here 1)Datasource(JDBC data source)
2)Ignite cache.
Please suggest how can I achieve this JTA transaction using two XAResources.
Please also suggest after all these configuration how to
get JtaTransactionManager instance to initiate the transaction. Currently I
am using Narayana JTA implementation.
private IgniteConfiguration getIgniteConfiguration(IgniteSpringBean ignite) {
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setIgniteInstanceName("springDataNode");
cfg.setPeerClassLoadingEnabled(false);
cfg.setRebalanceThreadPoolSize(4);
* cfg.setTransactionConfiguration(transactionConfiguration());*
cfg.setCacheConfiguration(getIPContainerCacheConfiguration(),getIPContainerIPV4CacheConfiguration(),getUserPermissionCacheConfiguration(),getUserAccountCacheConfiguration());
return cfg;
}
@Bean
public TransactionConfiguration transactionConfiguration(){
TransactionConfiguration configuration = new TransactionConfiguration();
Factory factory = new Factory() {
@Override
public Object create() {
return jtaTransactionManager();
}
};
configuration.setTxManagerFactory(factory);
*configuration.setUseJtaSynchronization(true);*
return configuration;
}
@Bean
public PlatformTransactionManager jtaTransactionManager() {
JtaTransactionManager tm = new JtaTransactionManager();
tm.setTransactionManager(transactionManager());
return tm;
}
@Bean
public TransactionManager transactionManager() {
return new TransactionManagerImple();
}
Thanks,
Akash