Documentation
¶
Overview ¶
Package gcppubsub provides a pubsub implementation that uses GCP PubSub. Use OpenTopic to construct a *pubsub.Topic, and/or OpenSubscription to construct a *pubsub.Subscription.
As ¶
gcspubsub exposes the following types for As:
- Topic: *raw.PublisherClient
- Subscription: *raw.SubscriberClient
- Message: *pb.PubsubMessage
- Error: *google.golang.org/grpc/status.Status
Index ¶
- func Dial(ctx context.Context, ts gcp.TokenSource) (*grpc.ClientConn, func(), error)
- func OpenSubscription(client *raw.SubscriberClient, proj gcp.ProjectID, subscriptionName string, ...) *pubsub.Subscription
- func OpenTopic(client *raw.PublisherClient, proj gcp.ProjectID, topicName string, ...) *pubsub.Topic
- func PublisherClient(ctx context.Context, conn *grpc.ClientConn) (*raw.PublisherClient, error)
- func SubscriberClient(ctx context.Context, conn *grpc.ClientConn) (*raw.SubscriberClient, error)
- type SubscriptionOptions
- type TopicOptions
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Dial ¶
func Dial(ctx context.Context, ts gcp.TokenSource) (*grpc.ClientConn, func(), error)
Dial opens a gRPC connection to the GCP Pub Sub API.
The second return value is a function that can be called to clean up the connection opened by Dial.
func OpenSubscription ¶
func OpenSubscription(client *raw.SubscriberClient, proj gcp.ProjectID, subscriptionName string, opts *SubscriptionOptions) *pubsub.Subscription
OpenSubscription returns a *pubsub.Subscription backed by an existing GCP PubSub subscription subscriptionName in the given projectID. See the package documentation for an example.
Example ¶
package main import ( "context" "log" "gocloud.dev/gcp" "gocloud.dev/pubsub/gcppubsub" ) func main() { // Your GCP credentials. // See https://cloud.google.com/docs/authentication/production // for more info on alternatives. ctx := context.Background() creds, err := gcp.DefaultCredentials(ctx) if err != nil { log.Fatal(err) } // Get the ProjectID from the credentials (it's required by OpenTopic). projID, err := gcp.DefaultProjectID(creds) if err != nil { log.Fatal(err) } // Open a gRPC connection to the GCP Pub Sub API. conn, cleanup, err := gcppubsub.Dial(ctx, creds.TokenSource) if err != nil { log.Fatal(err) } defer cleanup() // Construct a SubscriberClient using the connection. subClient, err := gcppubsub.SubscriberClient(ctx, conn) if err != nil { log.Fatal(err) } defer subClient.Close() // Construct a *pubsub.Subscription. s := gcppubsub.OpenSubscription(subClient, projID, "example-subscription", nil) defer s.Shutdown(ctx) // Now we can use s to receive messages. msg, err := s.Receive(ctx) if err != nil { // Handle error.... } // Handle message.... msg.Ack() }
Output:
func OpenTopic ¶
func OpenTopic(client *raw.PublisherClient, proj gcp.ProjectID, topicName string, opts *TopicOptions) *pubsub.Topic
OpenTopic returns a *pubsub.Topic backed by an existing GCP PubSub topic topicName in the given projectID. See the package documentation for an example.
Example ¶
package main import ( "context" "log" "gocloud.dev/gcp" "gocloud.dev/pubsub" "gocloud.dev/pubsub/gcppubsub" ) func main() { // Your GCP credentials. // See https://cloud.google.com/docs/authentication/production // for more info on alternatives. ctx := context.Background() creds, err := gcp.DefaultCredentials(ctx) if err != nil { log.Fatal(err) } // Get the ProjectID from the credentials (it's required by OpenTopic). projID, err := gcp.DefaultProjectID(creds) if err != nil { log.Fatal(err) } // Open a gRPC connection to the GCP Pub Sub API. conn, cleanup, err := gcppubsub.Dial(ctx, creds.TokenSource) if err != nil { log.Fatal(err) } defer cleanup() // Construct a PublisherClient using the connection. pubClient, err := gcppubsub.PublisherClient(ctx, conn) if err != nil { log.Fatal(err) } defer pubClient.Close() // Construct a *pubsub.Topic. t := gcppubsub.OpenTopic(pubClient, projID, "example-topic", nil) defer t.Shutdown(ctx) // Now we can use t to send messages. err = t.Send(ctx, &pubsub.Message{Body: []byte("example message")}) }
Output:
func PublisherClient ¶
func PublisherClient(ctx context.Context, conn *grpc.ClientConn) (*raw.PublisherClient, error)
PublisherClient returns a *raw.PublisherClient that can be used in OpenTopic.
func SubscriberClient ¶
func SubscriberClient(ctx context.Context, conn *grpc.ClientConn) (*raw.SubscriberClient, error)
SubscriberClient returns a *raw.SubscriberClient that can be used in OpenSubscription.
Types ¶
type SubscriptionOptions ¶
type SubscriptionOptions struct{}
SubscriptionOptions will contain configuration for subscriptions.