build with
ledgerq
A message queue in a directory
A Go library. Give it a path and messages go to an append-only log on disk, with no broker to run.
One process, one read position. On an i5 laptop: about 200,000 writes a second buffered,
27 with AutoSync, which puts each one on disk before it returns. Reads run
at about 80 a second.
After a hard kill the log reopens at its last complete entry. Buffered writes can be
lost; AutoSync prevents that.
why it exists
Kafka and RabbitMQ need separate processes and network setup. In-memory channels lose their data when the process exits. A database queue adds a dependency and polling.
Background tasks that outlive a restart, edge devices and CI runners need a queue with none of those costs.
what it taught
Three features were refused for what they would bring in. Consumer groups need networking, transactions need two-phase commit, an HTTP API adds a dependency.
go.mod has no require.
Source is public.