Show HN: Lightweight Task queue on Erlang/OTP, SQLite-backed, no overengineering
Posted by ent1c3d 6 days ago
Setting up Kafka or such enterprise oriented software with their clusters or dedicated servers is heavy and bothering enough that most small teams or indie hackers skip it entirely and making compromise to use in-memory queues.
I wanted something in between: a persistent queue that is simple to run (one binary, which makes one sqlite db), gets real fault isolation and crash recovery due to Elixir, easy to inspect (open ezra.db in any SQLite browser and see every task), and requires no new client library - it speaks the Redis Streams wire protocol, so any Redis client in any language just works out of the box.
Very short demo video: [https://www.youtube.com/watch?v=MLYyD3DVWmE]
Comments
Comment by hankbond 3 days ago
I agree that in many areas there often is not much in-between "roll yourself in-memory" and "enterprise grade maxed out scalability focus".
Comment by ent1c3d 1 day ago
But, for sure, having your own SDKs has advantages too - you don't depend on anyone else's protocol decisions, have less dependency, eyc.
Btw, the first time I saw one company use another company's SDK, which I really liked, was in 2023, when DeepSeek used OpenAI's SDK and still think it was brilliant.
Comment by bhaney 4 days ago
Save yourself the headache of people not reading this and just disable pull requests in the repo settings
Comment by ent1c3d 2 days ago
Comment by 3dedb728-3f77 1 day ago
Comment by advertum 3 days ago
Comment by ent1c3d 2 days ago
Comment by neoecos 4 days ago
Comment by ent1c3d 1 day ago
Re inspiration: no direct inspiration really, just needed this tool myself for my own projects. But I guess this project as my engineering taste was kind of influenced/validated by bright minds like Richard Hipp, Joe Armstrong, and Derek Sivers
Comment by skrebbel 4 days ago
Comment by xlii 4 days ago
If so should we also consider PostgreSQL overengineered?
It's a shame OP decided to use Elixir as base, many ecosystems don't have mature task queues (e.g. for Rust I had to roll my own: simple_queue) so the space IMO would be more welcoming.
On OTP doubt anything can even make a dent in Oban user base.
Comment by gamache 4 days ago
Comment by abrookewood 4 days ago
Comment by ent1c3d 1 day ago
as an answer: tare actually two ways to run it. As a standalone binary, it's one process you run(you can easily run it via docker too) on its own(which speaks on Redis protocol over TCP) - and any language connects to it like a Redis server.
Or, if you're on Elixir, you can skip the separate process entirely and add it directly to your app's supervision tree - it runs inside your own app's process, no network hop, just function calls.
Comment by memset 3 days ago
Comment by ent1c3d 1 day ago
Comment by cpursley 4 days ago
Comment by robinvdvleuten 2 days ago
Comment by anapeksha 6 days ago
Comment by volume_tech 3 days ago