This is net (tcp, udp, unix socket) Pub/Sub for the Watermill project.
All Pub/Sub implementations can be found at https://watermill.io/pubsubs/.
Watermill is a Go library for working efficiently with message streams. It is intended for building event driven applications, enabling event sourcing, RPC over messages, sagas and basically whatever else comes to your mind. You can use conventional pub/sub implementations like Kafka or RabbitMQ, but also HTTP or MySQL binlog if that fits your use case.
Documentation: https://watermill.io/
Getting started guide: https://watermill.io/docs/getting-started/
Issues: https://github.com/ThreeDotsLabs/watermill/issues
- ConsumerGroups
- ExactlyOnceDelivery
- GuaranteedOrder
- Persistent
All contributions are very much welcome. If you'd like to help with Watermill development, please see open issues and submit your pull request via GitHub.
Currently implemented tcp4 transport. For implementing additional transport see Connection interface and pkg/connection/tcp4Connection as example.
If you didn't find the answer to your question in the documentation, feel free to ask us directly!
Please join us on the #watermill
channel on the Gophers slack: You can get an invite here.
- Transport wrapper for reconnection
- CI pipeline
- CI linting
- CI tests coverage
- More tests for subscriber and publisher