GithubHelp home page GithubHelp logo

tzolov / narayana-jta-geode-support Goto Github PK

View Code? Open in Web Editor NEW
2.0 3.0 1.0 96 KB

Apache Geode (Gemfire) and Narayana JTA integration utilities that enable global transactions between XA (e.g. JPA, JMS) and non-XA (e.g. Apache Geode) resources. The Last Resource Commit Optimization is configured to ensure transaction atomicity and data consistency

Java 100.00%

narayana-jta-geode-support's Introduction

Narayana (e.g. JBoss) JTA with Geode/GemFire

Download

Use Narayana JTA provider as global transaction manager to coordinate Geode/GemFire cache transactions along with JPA/JDBC and/or JMS resources.

Narayana is light-weight (e.g. out-of-container), embeddable global transaction manager. Narayana is JTA compliant and can be integrated with Geode/GemFire to perform XA transaction across Geode, JPA/JDBC and JMS operations.

Also Narayana supports Last Resource Commit Optiomization allowing with Geode/GemFire transactions to be run as last resources.

The narayana-geode extends the existing Geode JTA support by integrating a standalone (open-source) JTA provider and enabling LRCO for transaction-atomicity and data-consistency. The utility includes two sub-projects:

The Apache Geode(GemFire) + Narayana JTA = Global Transactions with Last-Resource Optimization explains the problem, the implemented solution and provides some how-use tips.

Narayana Geode/Gemfire Core

The narayana-geode-core library uses minimal external dependencies. Only Narayana and the Apache Geode/Gemfire APIs are needed (e.g. no dependencies on Spring or Spring Data Gemfire and so.) The narayana-geode-core README explains how to use the core utility.

Narayana Geode/Gemfire SpringBoot

The narayana-geode-springboot library extends narayana-geode-core to provide seamless integration with Spring Boot and Spring Data Gemfire (SDG).

The narayana-geode-springboot README explains how to use the core utility.

Quick Start

Show how to bootstrap a Spring Boot application that uses Narayana to manage global transactions between JPA and Gemfire (8.2.x).

  • Use the start.spring.io link to generate new Spring Boot application, pre-configured with Narayana, JPA, H2 and Gemfire 8.2.x starters.

  • Add narayana-gemfire82-springboot to the POM to enable the Narayana/Gemfire 8.2.x integration. The dependency are resolved from Maven Central

<dependency>
   <groupId>io.datalake.geode.jta</groupId>
   <artifactId>narayana-gemfire82-springboot</artifactId>
   <version>0.1.11</version>
</dependency>
  • Enable the Transaction Management and Geode Narayana JTA.
 @SpringBootApplication
 @EnableGeodeNarayanaJta
 @EnableTransactionManagement(order = 1)
 public class SampleNarayanaApplication implements CommandLineRunner {   ... }
  • Use the Spring Data idioms to create and configure JPA and Geode repositories.
public interface MyJpaRepository extends CrudRepository<JpaCustomer, Long> {...}
public interface MyGeodeRepository extends CrudRepository<GeodeCustomer, Long> {...}
@SpringBootApplication
@EnableJpaRepositories(basePackageClasses = JpaCustomer.class)
@EnableGemfireRepositories(basePackageClasses = GeodeCustomer.class)
...
  • Use the @Transactional Spring idioms to participate in a distributed transactions
@Transactional
public void addNewCustomer(String firstName, String lastName) {
   jpaRepository.save(new JpaCustomer(firstName, lastName));
   geodeRepository.save(new GeodeCustomer(666L, firstName, lastName));
}

POM dependencies

All narayana-geode dependencies can be resolved from Maven Central: io.datalake.geode.jta

Currently narayana-geode support Gemfire 8.2.x, Gemfire 9.0.x and Geode 1.1.x. See matrix for details:

POM Group POM Artifact POM Version Compatible Apache Geode/Gemfire Versions
io.datalake.geode.jta narayana-geode-core 0.1.11+ Apache Geode 1.1.x or newer, Gemfire 9.0.4 or newer
io.datalake.geode.jta narayana-geode-springboot 0.1.11+ Apache Geode 1.1.x or newer, Gemfire 9.0.4 or newer, SpringBoot 1.5.4 or newer. No SDG GA for this Geode/Gemfire version yet.
io.datalake.geode.jta narayana-gemfire82-core 0.1.11+ Gemfire 8.2.x
io.datalake.geode.jta narayana-gemfire82-springboot 0.1.11+ Gemfire 8.2.x, SpringBoot 1.5.4 or newer, Spring Data Gemfire 1.9.4

Build

To build the projects run

./mvn clean install

narayana-jta-geode-support's People

Stargazers

Ruslan Sharifullin avatar Jestan Nirojan avatar

Watchers

James Cloos avatar Christian Tzolov avatar  avatar

Forkers

rshlin

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.