Thursday, May 24, 2018
Multiple phases commit
psedocode
client invokes System A
System A performs process
if success
System A commits
System A invokes System B
System B performs process
if success
System B commits
System B invokes System N..
System N.. performs process
if success
System N.. commits
else
System N.. rollback
System N.. return false
else
System B rollback
System B return false
else
System A rollback
System A returns fail
to simplified the above logic,
1. process and commit own transaction.
2. invoke external system/process
3.1 if success, return true
3.2 if failed, return false, manual rollback the transaction.
Done!!
Wednesday, May 16, 2018
Manual rollback with MongoDB
When there is a need to save different documents at the same time in microservices, or more specifically NoSql.
It is not an easy job, because NoSql does not support transaction like RDBMS.
The multiple phases commit in the previous post able to achieve the transaction-like behavior with MongoDB.
The code snippet below will be demonstrated by Play2.x, MongoDB, Morphia.
Done!!
It is not an easy job, because NoSql does not support transaction like RDBMS.
The multiple phases commit in the previous post able to achieve the transaction-like behavior with MongoDB.
The code snippet below will be demonstrated by Play2.x, MongoDB, Morphia.
JsonNode json = request().body().asJson();
MyDocument md = Json.fromJson(json, MyDocument.class);
MyDocument mdCurrent = MyDocumentRepo.findMyDocumentById( md.getId() );
MyDocumentRepo.save( md );
boolean status = callNextService();
if(status == true) {
// not doing anything
} else {
// manually rollback the previous md
MyDocumentRepo.save( mdCurrent );
}
Done!!
Tuesday, May 15, 2018
Subscribe to:
Posts (Atom)
Popular Posts
- How to create database view with Oracle SQL Developer Data Modeler
- Handling Many-to-Many relationship in relational model
- Eclipselink Cache Coordination with JBoss and JMS
- How to backup Oracle SQL Developer Data Modeler project
- Currency formatting with <f:convertNumber />
- How to easily embed a Google Map in your website
- Velocity without template(.vm) file
- Retrieving image from database made easy by p:graphicImage
- How to add Sequence Generator to a table in Oracle SQL Developer Data Modeler
- How to export data model to DDL with Oracle SQL Developer Data Modeler
