Bolt Pub/Sub
On this page
Bolt is a pure Go key/value store which provides a simple, fast, and reliable database for projects that don’t require a full database server such as Postgres or MySQL.
Bolt backed Pub/Sub is good for simple applications which don’t need a more advanced Pub/Sub system with external dependencies or already use Bolt and want to publish messages in transaction when saving other data.
Bolt documentation: https://github.com/etcd-io/bbolt
Installation
Characteristics
Feature | Implements | Note |
---|---|---|
ConsumerGroups | no | |
ExactlyOnceDelivery | no | |
GuaranteedOrder | no | |
Persistent | yes |
Configuration
Full source: github.com/ThreeDotsLabs/watermill-bolt/pkg/bolt/bolt.go
Full source: github.com/ThreeDotsLabs/watermill-bolt/pkg/bolt/bolt.go
Full source: github.com/ThreeDotsLabs/watermill-bolt/pkg/bolt/bolt.go
Subscription name
To receive messages published to a topic, you must create a subscription to that topic. Only messages published to the topic after the subscription is created will be received by the subscriber.
A topic can have multiple subscriptions, but a given subscription belongs to a single topic.
In Watermill, the subscription is created automatically during calling
Subscribe()
. Subscription name is generated by calling the function set as
SubscriberConfig.GenerateSubscriptionName
. By default, it is the topic name
with the string _sub
appended to it.
Marshaler
Watermill’s messages cannot be directly saved in Bolt which operates on byte slices. Marshaller converts the messages to and from byte slices. The default implementation marshals messages as JSON, a format which is human-readable for easier debugging. The performance should be enough for most applications unless a very large messages are used within your system. If that is the case you may want to consider implementing a more efficient marshaler.
Full source: github.com/ThreeDotsLabs/watermill-bolt/pkg/bolt/marshaler.go