Message broker
NuvexaMQ
Durable message broker — one append-only log, queues, exchanges, and replayable streams
Broker 0.1.1
Single-node durable message broker. Install the server package, then publish and consume through the NuvexaMQ data port from the language samples. Virtual hosts, users, permissions, exchanges, queues, bindings, and policies follow the RabbitMQ model. The bytes on the socket are NuvexaMQ frames.
Install
Production does not use the src folder. Install the package for the machine. It installs the broker and the desktop app, puts nuvexamq on PATH, and starts the broker on boot. CI on main keeps the packages as workflow artifacts for 14 days. The tag v0.1.1 publishes them on the GitHub Release.
| System | Package | Service | Data directory |
|---|---|---|---|
| Windows | NuvexaMQ-<version>-win-x64.msi or win-arm64.msi | Windows service NuvexaMQ | C:\ProgramData\NuvexaMQ\data |
| macOS | NuvexaMQ-<version>-osx-arm64.pkg or osx-x64.pkg | launchd com.nuventra.nuvexamq | /Library/Application Support/NuvexaMQ/data |
| Linux | nuvexamq_<version>_amd64.deb or _arm64.deb, and the matching .rpm | systemd nuvexamq | /var/lib/nuvexamq |
nuvexamq
nuvexamq -v
nuvexamq-desktopListeners
A package install and the desktop app both use these defaults. Sign in to the console as guest / guest. That account is accepted only from this machine. Open http://127.0.0.1:5763/.
- 5761 — Data. Clients publish, fetch, and ack here.
- 5762 — Health and metrics. GET /health and GET /metrics.
- 5763 — Management console and HTTP API.
- 5764 — The same console and API over HTTPS.
Overview
NuvexaMQ 0.1.1 stores every message in one append-only log. A queue, a pub/sub fan-out, and a replayable stream are three ways to read that log. An acknowledged publish is on disk. The installer ships the broker and the desktop app for Windows, macOS, and Linux. Applications open TCP 5761 and exchange NuvexaMQ frames. The server, engine, and protocol projects are not NuGet packages.
Publish and consume
nuvexamq stream add --name orders --filter orders.>
nuvexamq pub --subject orders.created --body hello --key order-18
nuvexamq consume --stream orders --durable billing --count 1orders.> matches orders.created and orders.created.eu. * is one token. > is the rest of the subject. A second durable consumer named warehouse on the same stream is fan-out. A second connection that uses the durable name billing is a competing consumer. Point an application at NUVEXA_HOST and NUVEXA_PORT (defaults 127.0.0.1 and 5761).
Capabilities
- One append-only log. Streams, queues, and exchange bindings are three ways to write or read it.
- Length-prefixed TCP frames on port 5761. Hello, publish, fetch, ack, nack, exchanges, queues, and bindings.
- Virtual hosts, users, configure/write/read permissions, policies, TTL, max length, and dead-letter exchanges.
- Management console and HTTP API on 5763, HTTPS on 5764, health and Prometheus text on 5762.
- Installer packages for Windows (MSI), macOS (PKG), and Linux (DEB and RPM), plus a desktop window that starts and stops the broker.
- Client programs for C#, JavaScript, TypeScript, Python, Java, Go, and the other languages under samples/clients.
Documentation
Version 0.1.1. Author Niladri Prasad Padhy / Nuventra. License MIT. These pages are the broker manuals: the technical reference, the admin panel, client integration, the language samples, and the benchmark.
Technical reference
Service model, listeners, process configuration, streams, consumers, exchanges, on-disk layout, wire protocol, management HTTP API, and the limits of 0.1.1.
Admin panel
Operator guide for the management console: sign-in, overview, connections, exchanges, queues, streams, users, permissions, virtual hosts, and policies.
Client integration
How an application opens the data port, publishes, fetches, acks, and calls the management API. Frame behavior and the error codes the client should surface.
Client samples
Commands for every language sample. Each program opens the data port and runs demo, ping, stream, consume, exchange, or admin.
Benchmark
Localhost publish and consume comparison of NuvexaMQ 0.1.0 and RabbitMQ 4.3.6 on one Mac, and how to repeat the NuvexaMQ run.
- Message broker
- Durable log
- Streams
- Queues
- Exchanges
- Management console
- Windows
- macOS
- Linux
Discussion
Comment on NuvexaMQ. The thread lives on this component's GitHub repository (nuvyntralabs/NuvexaMQ). Sign in with GitHub — Giscus uses Discussions, Utterances uses Issues.