/karmen

Message Broker for coordinated microservices

Primary LanguageGoMIT LicenseMIT

kind

Karmen Actions Status Docker Hub Go Report Card

Centralized Pub/Sub for microservices

2.0 release

  • I rewrote Karmen from the ground up in July 2021. It is incompatible with version 1.0.

Enhancements

  • Karmen now runs off of gRPC, which cuts down lots of nasty bugs
  • if: as a key under an action is now a reserved word for conditional expressions
  • parallel and serial blocks should perform how you expect...each block is done serially
  • Context variables - actions can return parameters that are injected into a block-level state. These can be referenced in conditionals with {hostname-action-variablename}
    • I'll be converting the dashes to dots once I add that feature to the condition parser I used
    • For each action, the {hostname-action-pass} boolean is set automatically so you can conditionally run actions based on the result of previous actions without managing a parameter. Code 200 is defined as a pass
  • Action error handling is improved, currently returning HTTP-like codes. I may downgrade this to a boolean

Get Started

Using Karmen (Server):

  1. See Docker Hub for releases
  2. See an example config to start declaring your workflow
  3. Run Karmen as part of your docker-compose.yml. see my example docker-compose.yml

Clients with examples:

  • Python - example in karmen.py when executed as script
  • Golang - example in main.go
  • Rust - example in example/src/main.rs Crates.io
  • Or write your own! Karmen runs on gRPC. See existing implementations for reference

Powered by

Projects using Karmen

  1. https://github.com/jrcichra/smartcar

Similar projects

  1. https://netflix.github.io/conductor/

More docs to come!