v1.0.0: Official initial release of TinyMQ
TinyMQ - Official Release Notes
This is the first official release of TinyMQ. It evolves the initial prototype into a robust, lightweight, and production-ready message broker.
Added
- Disk Persistence (WAL): Implemented a write-ahead log using append-only
.logfiles per topic to ensure zero message loss. - Auto-Compaction: Automatic purge algorithm on server boot to clean up acknowledged (ACK) records and free disk space.
- Reactive Long Polling: Efficient message consumption by suspending goroutines via Go channels with timeout support.
- Wildcard Routing: Support for consuming topics using patterns (e.g.,
events.*) with a pre-compiled regex caching system. - Official Go SDK: Native client at
client/client.gowith robust subscription mechanisms, exponential backoff (1s up to 32s), and re-queuing on failures. - Integrated Web Dashboard: Lightweight UI at
/dashboardfor monitoring topics, pending messages, and RAM usage. - CI/CD Pipeline: GitHub Actions workflow (
release.yaml) for multi-platform binaries and Docker image publishing to GHCR.
Architecture & performance
- Lock-Free Routing: Minimize global lock contention by releasing the broker mutex before disk I/O.
- Graceful Shutdown: Intercept
SIGTERM/SIGINTto flush and close files cleanly. - Memory Leak Prevention: Explicit nil assignments before reslicing and handling of
r.Context().Done()to free blocked goroutines. - File Descriptor Caching: Reuse open
*os.Filehandles to reduce OS-level open/close overhead.
Deployment
- Multi-stage Docker image based on Alpine, final image under ~20MB.
- Production orchestration via
docker-compose.yml, mounting a persistent./datadirectory.
Downloads
| Operating System | File Name |
|---|---|
| Windows (x64) | tinymq-windows-amd64.exe |
| Linux (x64) | tinymq-linux-amd64 |
| macOS (Intel) | tinymq-darwin-amd64 |
| macOS (Apple Silicon) | tinymq-darwin-arm64 |
Docker Image: docker pull ghcr.io/x-name15/tinymq:1.0.0
View CHANGELOG completo