Giter Club home page Giter Club logo

node-event-saga's Introduction

Node-event-saga

A custom implementation of the SAGA pattern using event driven architecture, created within a single nodejs process.

In this scenario the event bus is a Event Emitter into a nodejs process, in more complex project the bus will be sqs or sns in AWS. This project are only node.js modules and a scaffolding for more realistics scenarios will be necesary to add an api rest interface.

The Fail feature or the saga is only present in some events, in a real situation all the request should have it.

Events diagram

In this diagram I show how a transaction is done through different messages. For each operation two types of SUCCESS and FAIL messages are issued, in the case of FAIL status updates are applied to maintain consistency.

Note:

For this example, I will use for mock the Order, Notification and Payment service the web mocky.io to make fake but real request.

Events dictionary

Events name with description.

  • ORDER_CREATED: Initial event of the payment flow.
  • ORDER_CREATED_SUCCESS: Sucess order creation event.
  • ORDER_CREATED_FAIL: Order creaation error.
  • PAYMENT_FAIL: Error in process payment.
  • PAYMENT_SUCCESS: Payment succeffull.
  • FLOW_END: Send email with the bill and finish the flow.

To run:

npm install
node app.js

Readings:

node-event-saga's People

Contributors

damiancipolat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

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.