Documentation ¶
Overview ¶
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, ...) (*servicebus.Subscription, error)
- func NewTopic(ns *servicebus.Namespace, topicName string, opts []servicebus.TopicOption) (*servicebus.Topic, error)
- func OpenSubscription(ctx context.Context, parentNamespace *servicebus.Namespace, ...) *pubsub.Subscription
- func OpenTopic(ctx context.Context, sbTopic *servicebus.Topic, opts *TopicOptions) *pubsub.Topic
- type SubscriptionOptions
- type TopicOptions
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
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.
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() }
Output:
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.
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) } }
Output:
Types ¶
type SubscriptionOptions ¶
SubscriptionOptions will contain configuration for subscriptions.
type TopicOptions ¶
type TopicOptions struct{}
TopicOptions provides configuration options for an Azure SB Topic.