Exchange via Zero-loss Relay Agent
EZRA is a persistent task queue. Multiple services push tasks in, multiple workers pull them out and confirm when done. Each task stays visible and explicitly tracked until a worker marks it finished - no silent drops, no fire-and-forget. Backed by SQLite, powered by the Erlang/OTP runtime. Workers connect with any Redis client (Redis itself is not needed) in any language - no new SDK required.
This project is maintained by a single author and pull requests are not accepted. Issues for bugs or questions are welcome.
Contents
Quick start
docker run -d --name ezra \ -p 42002:42002 \ -v ezra_data:/data \ ghcr.io/entgriff/ezra
That is the entire server setup. Now, from any machine that can reach that port:
Producer - push a task
import redis r = redis . Redis ( host = "localhost" , port = 42002 , decode_responses = True , protocol = 3 ) # Push a task into the "emails" queue. # Queues do not need to be created in advance - the first push creates one. r . xadd ( "emails" , { "payload" : '{"to": "[email protected]"}' })
Worker - pop and process tasks
... continue reading