cloud

package
v3.11.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 15, 2021 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package cloud implements an events.PubSub implementation that uses Go Cloud PubSub.

Example
package main

import (
	"context"

	"go.thethings.network/lorawan-stack/v3/pkg/component"
	"go.thethings.network/lorawan-stack/v3/pkg/events"
	"go.thethings.network/lorawan-stack/v3/pkg/events/cloud"

	_ "gocloud.dev/pubsub/mempubsub"
)

func main() {
	// The task starter is used for automatic re-subscription on failure.
	taskStarter := component.StartTaskFunc(component.DefaultStartTask)

	// Import the desired cloud pub-sub drivers (see godoc.org/gocloud.dev).
	// In this example we use "gocloud.dev/pubsub/mempubsub".

	// This sends all events received from a Go Cloud pub sub to the default pubsub.
	cloudPubSub, err := cloud.WrapPubSub(context.TODO(), events.DefaultPubSub(), taskStarter, "mem://events", "mem://events")
	if err != nil {
		// Handle error.
	}

	// Replace the default pubsub so that we will now publish to a Go Cloud pub sub.
	events.SetDefaultPubSub(cloudPubSub)
}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type PubSub

type PubSub struct {
	events.PubSub
	// contains filtered or unexported fields
}

PubSub with Go Cloud backend.

func NewPubSub

func NewPubSub(ctx context.Context, taskStarter component.TaskStarter, pubURL, subURL string) (*PubSub, error)

NewPubSub creates a new PubSub that publishes and subscribes to Go Cloud. If the subURL is an empty string, this PubSub will only publish to Go Cloud.

func WrapPubSub

func WrapPubSub(ctx context.Context, wrapped events.PubSub, taskStarter component.TaskStarter, pubURL, subURL string) (ps *PubSub, err error)

WrapPubSub wraps an existing PubSub and publishes all events received from Go Cloud to that PubSub. If the subURL is an empty string, this PubSub will only publish to Go Cloud.

func (*PubSub) Close

func (ps *PubSub) Close(ctx context.Context) error

Close the Go Cloud publisher.

func (*PubSub) Publish

func (ps *PubSub) Publish(evt events.Event)

Publish an event to Go Cloud.

func (*PubSub) Subscribe added in v3.9.2

func (ps *PubSub) Subscribe(name string, hdl events.Handler) error

Subscribe to events from Go Cloud.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL