package azurepubsub
import "gocloud.dev/pubsub/azurepubsub"
Package azurepubsub provides an implementation of pubsub using Azure Service Bus Topic and Subscription. See https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview for an overview.
As
azurepubsub exposes the following types for As:
- Topic: *servicebus.Topic
- Subscription: *servicebus.Subscription
- Message: *servicebus.Message
- Error: common.Retryable
Index ¶
- func NewNamespaceFromConnectionString(connectionString string) (*servicebus.Namespace, error)
- func NewSubscription(parentTopic *servicebus.Topic, subscriptionName string, opts []servicebus.SubscriptionOption) (*servicebus.Subscription, error)
- func NewTopic(ns *servicebus.Namespace, topicName string, opts []servicebus.TopicOption) (*servicebus.Topic, error)
- func OpenSubscription(ctx context.Context, parentNamespace *servicebus.Namespace, parentTopic *servicebus.Topic, sbSubscription *servicebus.Subscription, opts *SubscriptionOptions) *pubsub.Subscription
- func OpenTopic(ctx context.Context, sbTopic *servicebus.Topic, opts *TopicOptions) *pubsub.Topic
- type SubscriptionOptions
- type TopicOptions
Examples ¶
Functions ¶
func NewNamespaceFromConnectionString ¶
NewNamespaceFromConnectionString returns a *servicebus.Namespace from a Service Bus connection string.
func NewSubscription ¶
func NewSubscription(parentTopic *servicebus.Topic, subscriptionName string, opts []servicebus.SubscriptionOption) (*servicebus.Subscription, error)
NewSubscription returns a *servicebus.Subscription associated with a Service Bus Topic.
func NewTopic ¶
func NewTopic(ns *servicebus.Namespace, topicName string, opts []servicebus.TopicOption) (*servicebus.Topic, error)
NewTopic returns a *servicebus.Topic associated with a Service Bus Namespace.
func OpenSubscription ¶
func OpenSubscription(ctx context.Context, parentNamespace *servicebus.Namespace, parentTopic *servicebus.Topic, sbSubscription *servicebus.Subscription, opts *SubscriptionOptions) *pubsub.Subscription
OpenSubscription initializes a pubsub Subscription on a given Service Bus Subscription and its parent Service Bus Topic.
Code:play
Example¶
package main
import (
"context"
"log"
"os"
"gocloud.dev/pubsub/azurepubsub"
)
func main() {
ctx := context.Background()
// See docs below on how to provision an Azure Service Bus Namespace and obtaining the connection string.
// https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues
connString := os.Getenv("SERVICEBUS_CONNECTION_STRING")
topicName := "test-topic"
subscriptionName := "test-sub"
if connString == "" {
log.Fatal("Service Bus ConnectionString is not set")
}
// Construct a Service Bus Namespace from a SAS Token.
// See https://godoc.org/github.com/Azure/azure-service-bus-go#Namespace.
ns, err := azurepubsub.NewNamespaceFromConnectionString(connString)
if err != nil {
log.Fatal(err)
}
// Construct a Service Bus Topic for a topicName associated with a NameSpace.
// See https://godoc.org/github.com/Azure/azure-service-bus-go#Topic.
sbTopic, err := azurepubsub.NewTopic(ns, topicName, nil)
if err != nil {
log.Fatal(err)
}
defer sbTopic.Close(ctx)
// Construct a Service Bus Subscription which is a child to a Service Bus Topic.
// See https://godoc.org/github.com/Azure/azure-service-bus-go#Topic.NewSubscription.
sbSub, err := azurepubsub.NewSubscription(sbTopic, subscriptionName, nil)
if err != nil {
log.Fatal(err)
}
defer sbSub.Close(ctx)
// Construct a *pubsub.Subscription for a given Service Bus NameSpace and Topic.
s := azurepubsub.OpenSubscription(ctx, ns, sbTopic, sbSub, nil)
// Receive a message from the *pubsub.Subscription backed by Service Bus.
msg, err := s.Receive(ctx)
if err != nil {
log.Fatal(err)
}
// Acknowledge the message, this operation issues a 'Complete' disposition on the Service Bus message.
// See https://godoc.org/github.com/Azure/azure-service-bus-go#Message.Complete.
msg.Ack()
}
func OpenTopic ¶
func OpenTopic(ctx context.Context, sbTopic *servicebus.Topic, opts *TopicOptions) *pubsub.Topic
OpenTopic initializes a pubsub Topic on a given Service Bus Topic.
Code:play
Example¶
package main
import (
"context"
"log"
"os"
"gocloud.dev/pubsub"
"gocloud.dev/pubsub/azurepubsub"
)
func main() {
ctx := context.Background()
// See docs below on how to provision an Azure Service Bus Namespace and obtaining the connection string.
// https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues
connString := os.Getenv("SERVICEBUS_CONNECTION_STRING")
topicName := "test-topic"
if connString == "" {
log.Fatal("Service Bus ConnectionString is not set")
}
// Construct a Service Bus Namespace from a SAS Token.
// See https://godoc.org/github.com/Azure/azure-service-bus-go#Namespace.
ns, err := azurepubsub.NewNamespaceFromConnectionString(connString)
if err != nil {
log.Fatal(err)
}
// Construct a Service Bus Topic for a topicName associated with a NameSpace.
// See https://godoc.org/github.com/Azure/azure-service-bus-go#Topic.
sbTopic, err := azurepubsub.NewTopic(ns, topicName, nil)
if err != nil {
log.Fatal(err)
}
defer sbTopic.Close(ctx)
// Construct a *pubsub.Topic.
t := azurepubsub.OpenTopic(ctx, sbTopic, nil)
defer t.Shutdown(ctx)
// Construct a *pubsub.Message.
msg := &pubsub.Message{
Body: []byte("example message"),
Metadata: map[string]string{
"Priority": "1",
},
}
// Send *pubsub.Message from *pubsub.Topic backed by Azure Service Bus.
err = t.Send(ctx, msg)
if err != nil {
log.Fatal(err)
}
}
Types ¶
type SubscriptionOptions ¶
SubscriptionOptions will contain configuration for subscriptions.
type TopicOptions ¶
type TopicOptions struct{}
TopicOptions provides configuration options for an Azure SB Topic.
Source Files ¶
azurepubsub.go
- Version
- v0.10.0
- Published
- Feb 12, 2019
- Platform
- js/wasm
- Imports
- 16 packages
- Last checked
- 1 week ago –
Tools for package owners.