snapshot of https://github.com/ThreeDotsLabs/watermill.git (master, 2026-09-15; blobs > 131072B omitted)
Some checks failed
master / ci (push) Failing after 0s

This commit is contained in:
upstream-mirror
2026-09-15 21:27:46 +05:00
commit ce933d1277
538 changed files with 46504 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
+++
title = "Bolt Pub/Sub"
description = "A pure Go key/value store"
date = 2021-11-19T00:00:00+02:00
bref = "A pure Go key/value store"
weight = 20
+++
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
```bash
go get github.com/ThreeDotsLabs/watermill-bolt
```
### Characteristics
| Feature | Implements | Note |
| ------------------- | ---------- | ---- |
| ConsumerGroups | no | |
| ExactlyOnceDelivery | no | |
| GuaranteedOrder | no | |
| Persistent | yes | |
### Configuration
{{% load-snippet-partial file="src-link/watermill-bolt/pkg/bolt/bolt.go" first_line_contains="type CommonConfig struct " last_line_equals="}" %}}
{{% load-snippet-partial file="src-link/watermill-bolt/pkg/bolt/bolt.go" first_line_contains="type PublisherConfig struct " last_line_equals="}" %}}
{{% load-snippet-partial file="src-link/watermill-bolt/pkg/bolt/bolt.go" first_line_contains="type SubscriberConfig struct " last_line_equals="}" %}}
#### 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.
{{% load-snippet-partial file="src-link/watermill-bolt/pkg/bolt/marshaler.go" first_line_contains="// Marshaler" last_line_equals="}" %}}