US 12,474,983 B2
System and method for reactive messaging client for use with a microservices environment
Paul Parkinson, Jacksonville, FL (US); and Daniel Kec, Prague (CZ)
Assigned to ORACLE INTERNATIONAL CORPORATION, Redwood Shores, CA (US)
Filed by ORACLE INTERNATIONAL CORPORATION, Redwood Shores, CA (US)
Filed on Apr. 14, 2021, as Appl. No. 17/230,581.
Claims priority of provisional application 63/009,954, filed on Apr. 14, 2020.
Prior Publication US 2021/0326192 A1, Oct. 21, 2021
Int. Cl. G06F 9/54 (2006.01); H04L 67/10 (2022.01)
CPC G06F 9/546 (2013.01) [G06F 9/541 (2013.01); H04L 67/10 (2013.01)] 15 Claims
OG exemplary drawing
 
1. A system for use of a reactive messaging client in a microservices environment; comprising:
a computer including one or more processors, that provides access to a microservices environment for use with software applications;
a reactive engine that provides a reactive messaging API and operators that can be used with reactive streams, to enable client and server applications to communicate within the microservices environment, for use with long-running activities associated with microservices, each long-running activity spanning two or more distinct microservices within the microservices environment; and
one or more messaging connectors adapted to provide publishers and subscribers for channels used in reactive messaging with services and/or server applications, the one or more messaging connectors comprising a microservices-based Java Message Service (JMS) connector operable with the reactive engine for use with the long-running activities associated with microservices, wherein the microservices-based JMS connector is connected to an Advance Queuing (AQ) environment via an AQ specific Application Programming Interface (API);
wherein the system supports the use of a microservices architectural pattern to implement transactions within the AQ environment, the microservices architectural pattern enabling each long-running activity that spans a plurality of microservices to be performed by the plurality of microservices as a series of local transactions at one local database provided within a database environment, each local transaction updating or publishing a message or event to trigger a next local transaction in the pattern, which message or event is recorded to the one local database together with an identifier for identifying an associated microservice;
wherein upon committing a long-running activity spanning the plurality of microservices and their associated transactions based upon a successful completion of each of the series of local transactions performed by the microservices at the one local database, each of the microservices of the plurality of microservices commit; and
wherein upon rollback of the long-running activity spanning the plurality of microservices and their associated transactions based upon a failure of a local transaction of the series of local transactions performed by the plurality of microservices at the one local database, one or more appropriate compensation actions are determined, based upon the identifiers stored at the one local database, by the database environment for each of the plurality of microservices preceding the failed local transaction and performed, by the database environment, at the local database utilizing the identifiers stored at the one local database.