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 ¶
const Scheme = "mem"
Scheme is the URL scheme mempubsub registers its URLOpeners under on pubsub.DefaultMux.
Variables ¶
This section is empty.
Functions ¶
func NewSubscription ¶
NewSubscription creates a new subscription for the given topic. It panics if the given topic did not come from mempubsub.
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.