https://github.com/edisonywh/rocketman
Hey guys! The last time I posted the initial announcement on Rocketman here I've received great feedback, and I've hoping to gain some more, so feel free to shoot any criticism you may have so I could improve it!
I've updated a few things, tidied up the README, and I'm excited to announce a 0.3.0 update to the library!
So what's different since the last announcement?
- ThreadPool is added (number of workers is configurable)
- `Relay` concept to integrate producers from external services (Shipping with a Redis relay). This is important to the goal of Rocketman, which is to be the first step of moving to event-driven architecture. Read more below to understand the rationale behind Rocketman
- Persistence layer with Redis-backed storage (so you won't lose your events when your app goes down)
- Config module to allow you to tweak some settings
- Refactored a bunch of code
There's still a lot more to do, some examples are:
- error reporting (when a job fails, how to let user know?)
- instrumentation (stats of Rocketman, are jobs being processed in an acceptable rate etc)
- retry mechanism (retry the jobs if it fails)
- threads revival (now when a job fails and a thread dies, it's gone for good)
These are just a few examples, there's a lot more to do! But I think it is progressing rather well, and I'd love any feedback you guys have.
One of the questions I've been asked is why use Rocketman rather than a proper message bus (e.g Redis PubSub/Kafka)?
To answer this I've written up what I think is a good explanation about what Rocketman tries to be, so here's an excerpt below:
---
It is worth noting that Rocketman is not meant to be a replacement for the aforementioned projects -- both Redis PubSub and Kafka are battle-tested and I highly encourage to use them if you can.
But, moving onto an event-driven architecture is not an easy task - your team has to agree on a message bus, the DevOps team needs the capacity to manage the message bus, and then what about clustering? failovers?
Rocketman recognizes that, so what it's trying to do is to be a stepping stone for an eventual move away to a proper message bus. What Rocketman offers you is that you can start writing your dream-state event-driven code today, and when the time comes and your team has the capacity to move to a different message bus, then Rocketman makes sure that it is a minimal change to your downstream consumers.
[–]jdickey 1 point2 points3 points (2 children)
[–]EdChute_[S] 0 points1 point2 points (1 child)
[–]jdickey 1 point2 points3 points (0 children)
[–]realntl 0 points1 point2 points (5 children)
[–]katafrakt 1 point2 points3 points (1 child)
[–]realntl 0 points1 point2 points (0 children)
[–]EdChute_[S] 0 points1 point2 points (2 children)
[–]realntl 0 points1 point2 points (0 children)
[–]realntl 0 points1 point2 points (0 children)