Documentation
¶
Overview ¶
Package pubsub contains two generic interfaces for publishing data to queues and subscribing and consuming data from those queues.
// Publisher is a generic interface to encapsulate how we want our publishers
// to behave. Until we find reason to change, we're forcing all publishers
// to emit protobufs.
type Publisher interface {
// Publish will publish a message.
Publish(ctx context.Context, key string, msg proto.Message) error
// Publish will publish a []byte message.
PublishRaw(ctx context.Context, key string, msg []byte) error
}
// Subscriber is a generic interface to encapsulate how we want our subscribers
// to behave. For now the system will auto stop if it encounters any errors. If
// a user encounters a closed channel, they should check the Err() method to see
// what happened.
type Subscriber interface {
// Start will return a channel of raw messages
Start() <-chan SubscriberMessage
// Err will contain any errors returned from the consumer connection.
Err() error
// Stop will initiate a graceful shutdown of the subscriber connection
Stop() error
}
Where a `SubscriberMessage` is an interface that gives implementations a hook for acknowledging/delete messages. Take a look at the docs for each implementation in `pubsub` to see how they behave.
There are currently 3 implementations of each type of `pubsub` interfaces:
For pubsub via Amazon's SNS/SQS, you can use the `pubsub/aws` package.
For pubsub via Google's Pubsub, you can use the `pubsub/gcp` package.
For pubsub via Kafka topics, you can use the `pubsub/kafka` package.
For publishing via HTTP, you can use the `pubsub/http` package.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Log = logrus.New()
Log is the structured logger used throughout the package.
Functions ¶
This section is empty.
Types ¶
type MultiPublisher ¶
type MultiPublisher interface {
Publisher
// PublishMulti will publish multiple messages with a context.
PublishMulti(context.Context, []string, []proto.Message) error
// PublishMultiRaw will publish multiple raw byte array messages with a context.
PublishMultiRaw(context.Context, []string, [][]byte) error
}
MultiPublisher is an interface for publishers who support sending multiple messages in a single request, in addition to individual messages.
type Publisher ¶
type Publisher interface {
// Publish will publish a message with context.
Publish(context.Context, string, proto.Message) error
// Publish will publish a raw byte array as a message with context.
PublishRaw(context.Context, string, []byte) error
}
Publisher is a generic interface to encapsulate how we want our publishers to behave. Until we find reason to change, we're forcing all pubslishers to emit protobufs.
type Subscriber ¶
type Subscriber interface {
// Start will return a channel of raw messages.
Start() <-chan SubscriberMessage
// Err will contain any errors returned from the consumer connection.
Err() error
// Stop will initiate a graceful shutdown of the subscriber connection.
Stop() error
}
Subscriber is a generic interface to encapsulate how we want our subscribers to behave. For now the system will auto stop if it encounters any errors. If a user encounters a closed channel, they should check the Err() method to see what happened.