package gcppubsub
import "gocloud.dev/pubsub/gcppubsub"
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(ctx context.Context, client *raw.SubscriberClient, proj gcp.ProjectID, subscriptionName string, opts *SubscriptionOptions) *pubsub.Subscription
- func OpenTopic(ctx context.Context, client *raw.PublisherClient, proj gcp.ProjectID, topicName string, opts *TopicOptions) *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 ¶
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(ctx context.Context, 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.
Code:play
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(ctx, 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()
}
func OpenTopic ¶
func OpenTopic(ctx context.Context, 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.
Code:play
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(ctx, 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")})
}
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.
type TopicOptions ¶
type TopicOptions struct{}
TopicOptions will contain configuration for topics.
Source Files ¶
gcppubsub.go
- Version
- v0.10.0
- Published
- Feb 12, 2019
- Platform
- js/wasm
- Imports
- 15 packages
- Last checked
- 2 hours ago –
Tools for package owners.