Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(pubsublite)!: add separate publisher and subscriber client constructors with settings (api review) #3528

Merged
merged 10 commits into from Jan 27, 2021
4 changes: 2 additions & 2 deletions pubsublite/README.md
Expand Up @@ -30,7 +30,7 @@ topic := pubsublite.TopicPath{
Zone: "us-central1-b",
TopicID: "topic1",
}
publisher, err := ps.NewPublisherClient(ctx, ps.DefaultPublishSettings, topic)
publisher, err := ps.NewPublisherClient(ctx, topic)
if err != nil {
log.Fatal(err)
}
Expand Down Expand Up @@ -58,7 +58,7 @@ subscription := pubsublite.SubscriptionPath{
Zone: "us-central1-b",
SubscriptionID: "subscription1",
}
subscriber, err := ps.NewSubscriberClient(ctx, ps.DefaultReceiveSettings, subscription)
subscriber, err := ps.NewSubscriberClient(ctx, subscription)
if err != nil {
log.Fatal(err)
}
Expand Down
4 changes: 2 additions & 2 deletions pubsublite/doc.go
Expand Up @@ -73,7 +73,7 @@ https://godoc.org/cloud.google.com/go/pubsublite/ps.

To publish messages to a topic, first create a PublisherClient:

publisher, err := ps.NewPublisherClient(ctx, ps.DefaultPublishSettings, topicPath)
publisher, err := ps.NewPublisherClient(ctx, topicPath)

Then call Publish:

Expand Down Expand Up @@ -124,7 +124,7 @@ Receiving

To receive messages for a subscription, first create a SubscriberClient:

subscriber, err := ps.NewSubscriberClient(ctx, ps.DefaultReceiveSettings, subscriptionPath)
subscriber, err := ps.NewSubscriberClient(ctx, subscriptionPath)

Messages are then consumed from a subscription via callback.

Expand Down
10 changes: 4 additions & 6 deletions pubsublite/ps/example_test.go
Expand Up @@ -29,8 +29,7 @@ func ExamplePublisherClient_Publish() {
Zone: "zone",
TopicID: "topic-id",
}
// NOTE: DefaultPublishSettings and empty PublishSettings{} are equivalent.
publisher, err := ps.NewPublisherClient(ctx, ps.DefaultPublishSettings, topic)
publisher, err := ps.NewPublisherClient(ctx, topic)
if err != nil {
// TODO: Handle error.
}
Expand Down Expand Up @@ -58,7 +57,7 @@ func ExamplePublisherClient_Error() {
Zone: "zone",
TopicID: "topic-id",
}
publisher, err := ps.NewPublisherClient(ctx, ps.DefaultPublishSettings, topic)
publisher, err := ps.NewPublisherClient(ctx, topic)
if err != nil {
// TODO: Handle error.
}
Expand Down Expand Up @@ -89,8 +88,7 @@ func ExampleSubscriberClient_Receive() {
Zone: "zone",
SubscriptionID: "subscription-id",
}
// NOTE: DefaultReceiveSettings and empty ReceiveSettings{} are equivalent.
subscriber, err := ps.NewSubscriberClient(ctx, ps.DefaultReceiveSettings, subscription)
subscriber, err := ps.NewSubscriberClient(ctx, subscription)
if err != nil {
// TODO: Handle error.
}
Expand Down Expand Up @@ -123,7 +121,7 @@ func ExampleSubscriberClient_Receive_maxOutstanding() {
settings := ps.DefaultReceiveSettings
settings.MaxOutstandingMessages = 5
settings.MaxOutstandingBytes = 10e6
subscriber, err := ps.NewSubscriberClient(ctx, settings, subscription)
subscriber, err := ps.NewSubscriberClientWithSettings(ctx, subscription, settings)
if err != nil {
// TODO: Handle error.
}
Expand Down
4 changes: 2 additions & 2 deletions pubsublite/ps/integration_test.go
Expand Up @@ -80,7 +80,7 @@ func adminClient(ctx context.Context, t *testing.T, region string, opts ...optio

func publisherClient(ctx context.Context, t *testing.T, settings PublishSettings, topic pubsublite.TopicPath, opts ...option.ClientOption) *PublisherClient {
opts = testOptions(ctx, t, opts...)
pub, err := NewPublisherClient(ctx, settings, topic, opts...)
pub, err := NewPublisherClientWithSettings(ctx, topic, settings, opts...)
if err != nil {
t.Fatalf("Failed to create publisher client: %v", err)
}
Expand All @@ -89,7 +89,7 @@ func publisherClient(ctx context.Context, t *testing.T, settings PublishSettings

func subscriberClient(ctx context.Context, t *testing.T, settings ReceiveSettings, subscription pubsublite.SubscriptionPath, opts ...option.ClientOption) *SubscriberClient {
opts = testOptions(ctx, t, opts...)
sub, err := NewSubscriberClient(ctx, settings, subscription, opts...)
sub, err := NewSubscriberClientWithSettings(ctx, subscription, settings, opts...)
if err != nil {
t.Fatalf("Failed to create publisher client: %v", err)
}
Expand Down
13 changes: 11 additions & 2 deletions pubsublite/ps/publisher.go
Expand Up @@ -70,11 +70,20 @@ type PublisherClient struct {
}

// NewPublisherClient creates a new Cloud Pub/Sub Lite client to publish
// messages to a given topic.
// messages to a given topic. DefaultPublishSettings will be used.
//
// See https://cloud.google.com/pubsub/lite/docs/publishing for more information
// about publishing.
func NewPublisherClient(ctx context.Context, settings PublishSettings, topic pubsublite.TopicPath, opts ...option.ClientOption) (*PublisherClient, error) {
func NewPublisherClient(ctx context.Context, topic pubsublite.TopicPath, opts ...option.ClientOption) (*PublisherClient, error) {
return NewPublisherClientWithSettings(ctx, topic, DefaultPublishSettings, opts...)
}

// NewPublisherClientWithSettings creates a new Cloud Pub/Sub Lite client to
// publish messages to a given topic, using the specified PublishSettings.
//
// See https://cloud.google.com/pubsub/lite/docs/publishing for more information
// about publishing.
func NewPublisherClientWithSettings(ctx context.Context, topic pubsublite.TopicPath, settings PublishSettings, opts ...option.ClientOption) (*PublisherClient, error) {
codyoss marked this conversation as resolved.
Show resolved Hide resolved
region, err := pubsublite.ZoneToRegion(topic.Zone)
if err != nil {
return nil, err
Expand Down
14 changes: 12 additions & 2 deletions pubsublite/ps/subscriber.go
Expand Up @@ -235,11 +235,21 @@ type SubscriberClient struct {
}

// NewSubscriberClient creates a new Cloud Pub/Sub Lite client to receive
// messages for a given subscription.
// messages for a given subscription. DefaultReceiveSettings will be used.
//
// See https://cloud.google.com/pubsub/lite/docs/subscribing for more
// information about receiving messages.
func NewSubscriberClient(ctx context.Context, settings ReceiveSettings, subscription pubsublite.SubscriptionPath, opts ...option.ClientOption) (*SubscriberClient, error) {
func NewSubscriberClient(ctx context.Context, subscription pubsublite.SubscriptionPath, opts ...option.ClientOption) (*SubscriberClient, error) {
return NewSubscriberClientWithSettings(ctx, subscription, DefaultReceiveSettings, opts...)
}

// NewSubscriberClientWithSettings creates a new Cloud Pub/Sub Lite client to
// receive messages for a given subscription, using the specified
// ReceiveSettings.
//
// See https://cloud.google.com/pubsub/lite/docs/subscribing for more
// information about receiving messages.
func NewSubscriberClientWithSettings(ctx context.Context, subscription pubsublite.SubscriptionPath, settings ReceiveSettings, opts ...option.ClientOption) (*SubscriberClient, error) {
region, err := pubsublite.ZoneToRegion(subscription.Zone)
if err != nil {
return nil, err
Expand Down