I'm searching for a way to make a transaction span multiple services in different quarkus instances. I fully understand there's a camp of people saying that 2PC and stuff like that is a bad idea in a microservice-world but for my current business usecase it would be best option.
I have the following services:
* Service-A in quarkus-instance-A
* Service-B in quarkus-instance-B
* Service-C in quarkus-instance-C
Now I get a REST-Call into Service-A leading 2 REST-Calls to Service-B and C both of them updating a postgres-database via Hibernate. If Service-C fails I want the complete transaction rolledback.
As I'm coming from a JEE world this is roughly comparable to the following setup:
* Service-A in ejb-module-A
* Service-B in ejb-module-B
* Service-C in ejb-module-C
Here I get a REST-Call to Service-A leading to EJB-Calls to B and C and there I have nothing to do than to configure the datasource appropriately and everything just works.
My research until now brought up the following solutions:
* REST-AT: What's the state and could this be used in quarkus?
On Twitter Mark Little mentionned that 'There's also a non-CORBA based distributed transaction (JTA) version of Narayana in WildFly/EAP but you'd have to ask the Narayana team if it's part of Quarkus.'. Is something like that available? Are there any sample repos showing one of those in a simple example?