Documentation ¶
Overview ¶
Package sub creates PubSub subscriptions.
Index ¶
- func New(ctx context.Context, local bool, project string, topicName string, ...) (*pubsub.Subscription, error)
- func NewWithSubName(ctx context.Context, local bool, project string, topicName string, ...) (*pubsub.Subscription, error)
- func NewWithSubNameProvider(ctx context.Context, local bool, project string, topicName string, ...) (*pubsub.Subscription, error)
- func NewWithSubNameProviderAndExpirationPolicy(ctx context.Context, local bool, project string, topicName string, ...) (*pubsub.Subscription, error)
- type BroadcastNameProvider
- type ConstNameProvider
- type RoundRobinNameProvider
- type SubNameProvider
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func New ¶
func New(ctx context.Context, local bool, project string, topicName string, numGoRoutines int) (*pubsub.Subscription, error)
New returns a new *pubsub.Subscription.
project is the Google Cloud project that contains the PubSub topic.
topicName is the PubSub topic to listen to.
numGoRoutines is the number of Go routines we want to run.
Note that the returned subscription will have both sub.ReceiveSettings.MaxOutstandingMessages and sub.ReceiveSettings.NumGoroutines set, but they can be changed in the returned subscription.
The name of the returned subscription also takes 'local' into account, to avoid conflicting with subscriptions running in production. The topic and subscription are created if they don't already exist, which requires the "PubSub Admin" role.
func NewWithSubName ¶
func NewWithSubName(ctx context.Context, local bool, project string, topicName string, subName string, numGoRoutines int) (*pubsub.Subscription, error)
NewWithSubName returns a new *pubsub.Subscription.
project is the Google Cloud project that contains the PubSub topic.
topicName is the PubSub topic to listen to.
subName is the name of the subscription.
numGoRoutines is the number of Go routines we want to run.
Note that the returned subscription will have both sub.ReceiveSettings.MaxOutstandingMessages and sub.ReceiveSettings.NumGoroutines set, but they can be changed in the returned subscription.
The topic and subscription are created if they don't already exist, which requires the "PubSub Admin" role.
func NewWithSubNameProvider ¶
func NewWithSubNameProvider(ctx context.Context, local bool, project string, topicName string, subNameProvider SubNameProvider, numGoRoutines int) (*pubsub.Subscription, error)
NewWithSubNameProvider returns a new *pubsub.Subscription.
project is the Google Cloud project that contains the PubSub topic.
topicName is the PubSub topic to listen to.
subNameProvider generates a subscription name.
numGoRoutines is the number of Go routines we want to run.
Note that the returned subscription will have both sub.ReceiveSettings.MaxOutstandingMessages and sub.ReceiveSettings.NumGoroutines set, but they can be changed in the returned subscription.
The topic and subscription are created if they don't already exist, which requires the "PubSub Admin" role.
func NewWithSubNameProviderAndExpirationPolicy ¶
func NewWithSubNameProviderAndExpirationPolicy(ctx context.Context, local bool, project string, topicName string, subNameProvider SubNameProvider, expirationPolicy *time.Duration, numGoRoutines int) (*pubsub.Subscription, error)
NewWithSubNameProviderAndExpirationPolicy returns a new *pubsub.Subscription.
project is the Google Cloud project that contains the PubSub topic.
topicName is the PubSub topic to listen to.
subNameProvider generates a subscription name.
expirationPolicy determines the inactivity period before the subscription is automatically deleted. The minimum allowed value is 1 day. Defaults to 31 days if nil.
numGoRoutines is the number of Go routines we want to run.
Note that the returned subscription will have both sub.ReceiveSettings.MaxOutstandingMessages and sub.ReceiveSettings.NumGoroutines set, but they can be changed in the returned subscription.
The topic and subscription are created if they don't already exist, which requires the "PubSub Admin" role.
Types ¶
type BroadcastNameProvider ¶
type BroadcastNameProvider struct {
// contains filtered or unexported fields
}
BroadcastNameProvider implements SubNameProvider. It prevents messages from being load-balanced across multiple subscribers by generating unique, per-machine subscription names (based on the machine's hostname). Use this provider when you want all machines to receive all messages in a topic.
In production, subscription names are appended a suffix to avoid conflicts with local subscriptions created during development.
Note that Kubernetes Deployments and ReplicaSets assign fresh hostnames to pods, so applications will leave behind one unused subscription per pod when restarted. Unused subscriptions will be garbage-collected after 31 days. See https://cloud.google.com/pubsub/docs/admin#pubsub_create_pull_subscription-go.
func NewBroadcastNameProvider ¶
func NewBroadcastNameProvider(local bool, topicName string) BroadcastNameProvider
NewBroadcastNameProvider returns a new BroadcastNameProvider.
func (BroadcastNameProvider) SubName ¶
func (b BroadcastNameProvider) SubName() (string, error)
SubName implements SubNameProvider.
type ConstNameProvider ¶
type ConstNameProvider string
ConstNameProvider implements SubNameProvider that always returns the same subscription name.
func NewConstNameProvider ¶
func NewConstNameProvider(subName string) ConstNameProvider
NewConstNameProvider returns a new ConstNameProvider.
func (ConstNameProvider) SubName ¶
func (c ConstNameProvider) SubName() (string, error)
SubName implements SubNameProvider.
type RoundRobinNameProvider ¶
type RoundRobinNameProvider struct {
// contains filtered or unexported fields
}
RoundRobinNameProvider implements SubNameProvider. Use when running in production every instance uses the same subscription name so that they load-balance pulling items from the topic, and uses a different subscription name when running locally.
func NewRoundRobinNameProvider ¶
func NewRoundRobinNameProvider(local bool, topicName string) RoundRobinNameProvider
NewRoundRobinNameProvider returns a new RoundRobinNameProvider.
func (RoundRobinNameProvider) SubName ¶
func (r RoundRobinNameProvider) SubName() (string, error)
SubName implements SubNameProvider.
type SubNameProvider ¶
SubNameProvider is an interface for how a subscription name gets generated for a PubSub topic.