Coder Social home page Coder Social logo

arturwojnar / hermes Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 0.0 2.59 MB

Production-Ready TypeScript Outbox Pattern

Home Page: https://hermes.arturwojnar.dev/

License: Apache License 2.0

JavaScript 7.06% Shell 0.13% TypeScript 53.72% CSS 28.37% HTML 10.72%
chassis events microservices mongodb outbox-pattern postgresql reliability

hermes's Introduction

Build and test Deploy VitePress site to Pages Publish to NPM

Hermes logo



Hermes

Production-ready outbox pattern in TypeScript


🌿What is Hermes?

📜Hermes is the god of reliable deliveries. His two insignias are an outbox and a letter. Just write a message, put it into an envoy, and put it in the box. That's it! You don't need prayers, keeping crossed fingers and hope. Your message will be delivered for sure! Hermes is on it!


Hermes is a production-ready implementation of the Outbox Pattern.
Use it to provide at-least-once delivery to your system's consumers, so depite a timeout or a message broker outage, Hermes will keep trying to deliver that message to the broker.
After Chris Richardson:

At-least once delivery guarantees that a message broker will deliver a message to a consumer even if errors occur. One side-effect, however, is that the consumer can be invoked repeatedly for the same message

The Outbox pattern makes an atomic operation from a database operation (e.g. modifying an Aggregate or Entity) and publishing an event thanks to the fact that the event publishing happens first in the database along with the operation. Later Hermes makes sure that event goes to the message broker.


⚙️ Install

If you work with MongoDB, then:

npm i @arturwojnar/hermes @arturwojnar/hermes-mongodb

📁 Docs

Visit Hermes docs.

💬 Discussions

Head over to the discussions to share your ideas.

🤝 Thanks

Special thanks to Magdalena Gańczorz for helping me with Hermes logo.

hermes's People

Contributors

arturwojnar avatar semantic-release-bot avatar actions-user avatar

Stargazers

Adrian Mikołajczyk avatar Pawel Kasperek avatar Mateusz Stepaniuk avatar

Watchers

 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.