A fast message/event hub for Go applications using publish/subscribe with RabbitMQ-like topic patterns.
Hub is a Go library that implements a fast message/event hub using the publish/subscribe pattern. It provides topic-based routing similar to RabbitMQ exchanges, allowing Go applications to communicate efficiently between components without requiring a full external message broker. The library is optimized for high throughput and concurrent access.
Go developers building microservices, distributed systems, or applications that need lightweight internal event/message communication between components.
Developers choose Hub for its simplicity, performance, and RabbitMQ-like topic patterns without the overhead of running a separate message broker. It's a pure Go solution that integrates seamlessly into existing applications.
:incoming_envelope: A fast Message/Event Hub using publish/subscribe pattern with support for topics like* rabbitMQ exchanges for Go applications
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarks in the README show over 1.3 million messages per second, optimized with a concurrent subscription trie for efficient topic matching.
Offers both blocking and non-blocking subscribers, allowing developers to choose between reliability and performance based on use case, as detailed in the subscriber section.
Supports RabbitMQ-like wildcard patterns (*) for flexible message routing, enabling efficient communication between components without external brokers.
Built for safe use in concurrent Go applications, with thread-safe operations ensuring reliability in multi-goroutine environments.
Messages are stored only in memory; application restarts lead to complete data loss, unlike full message brokers that offer disk-based durability.
Only supports wildcard topic matching, missing advanced RabbitMQ features like header exchanges or fanout, which restricts complex routing scenarios.
Non-blocking subscribers explicitly drop messages when buffers are full, as admitted in the README, making them unsuitable for critical data where reliability is paramount.
hub is an open-source alternative to the following products: