mempubsub

package
v0.12.0 Latest Latest
Warning

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

Go to latest
Published: Mar 20, 2019 License: Apache-2.0 Imports: 10 Imported by: 67

Documentation

Overview

Package mempubsub provides an in-memory pubsub implementation. Use NewTopic to construct a *pubsub.Topic, and/or NewSubscription to construct a *pubsub.Subscription.

mempubsub should not be used for production: it is intended for local development and testing.

URLs

For pubsub.OpenTopic and pubsub.OpenSubscription, mempubsub registers for the scheme "mem". To customize the URL opener, or for more details on the URL format, see URLOpener. See https://godoc.org/gocloud.dev#hdr-URLs for background information.

As

mempubsub does not support any types for As.

Example
package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"gocloud.dev/pubsub"
	"gocloud.dev/pubsub/mempubsub"
)

func main() {
	// Construct a *pubsub.Topic.
	ctx := context.Background()
	t := mempubsub.NewTopic()
	defer t.Shutdown(ctx)

	// Construct a *pubsub.Subscription for the topic.
	s := mempubsub.NewSubscription(t, 1*time.Minute /* ack deadline */)
	defer s.Shutdown(ctx)

	// Now we can use t to send messages and s will receive them.
	err := t.Send(ctx, &pubsub.Message{Body: []byte("Hello World")})
	if err != nil {
		log.Fatal(err)
	}

	msg, err := s.Receive(ctx)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(string(msg.Body))
	msg.Ack()

}
Output:

Hello World
Example (OpenfromURL)
package main

import (
	"context"

	"gocloud.dev/pubsub"
)

func main() {
	ctx := context.Background()

	// OpenTopic creates a *pubsub.Topic from a URL.
	// This URL will open the topic "mytopic".
	t, err := pubsub.OpenTopic(ctx, "mem://mytopic")

	// Similarly, OpenSubscription creates a *pubsub.Subscription from a URL.
	// This URL will open a subscription to the topic "mytopic", which must
	// have been previously opened using OpenTopic.
	s, err := pubsub.OpenSubscription(ctx, "mem://mytopic")
	_, _, _ = t, s, err
}
Output:

Index

Examples

Constants

View Source
const Scheme = "mem"

Scheme is the URL scheme mempubsub registers its URLOpeners under on pubsub.DefaultMux.

Variables

This section is empty.

Functions

func NewSubscription

func NewSubscription(top *pubsub.Topic, ackDeadline time.Duration) *pubsub.Subscription

NewSubscription creates a new subscription for the given topic. It panics if the given topic did not come from mempubsub.

func NewTopic

func NewTopic() *pubsub.Topic

NewTopic creates a new in-memory topic.

Types

type URLOpener added in v0.12.0

type URLOpener struct {
	// contains filtered or unexported fields
}

URLOpener opens mempubsub URLs like "mem://topic".

The URL's host+path is used as the topic to create or subscribe to.

Query parameters:

  • ackdeadline: The ack deadline for OpenSubscription, in time.ParseDuration formats. Defaults to 1m.

func (*URLOpener) OpenSubscriptionURL added in v0.12.0

func (o *URLOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error)

OpenSubscriptionURL opens a pubsub.Subscription based on u.

func (*URLOpener) OpenTopicURL added in v0.12.0

func (o *URLOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error)

OpenTopicURL opens a pubsub.Topic based on u.

Jump to

Keyboard shortcuts

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