google-cloud-pubsub 1.6.0 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 350813891a25b960230adbe7a22dc40cd847065d368598650a0c663e81d66bc7
4
- data.tar.gz: 881a92aec3d136aef23bee956241bf400a5dd203a7f6c0a100e162a4c22c97d0
3
+ metadata.gz: dfbd62e0e48c406ed08325e5a216f03a0afc4f8319c5ef144fbb6b1fa189e16c
4
+ data.tar.gz: 31995baf9d81c17e1c867efb5584da5d0be27e1baa3bfa256311e803d43cbfb9
5
5
  SHA512:
6
- metadata.gz: c364975f01a107d41f1282eecdbec83d25e1d3717abcb45252afebfb64c6d028b9651e9d054bfb5b1caeb6e179045505f79e5faf802c30071f202e7a42e576af
7
- data.tar.gz: 7a9d23c2d74e734ad184d6dbb3acabad3868a6dd74b5836d7aa149c4c03edb7c80b414e4d52b2fe8bed9ae4e6794a0634c90c1919a5471196cda408c423f2610
6
+ metadata.gz: 8d50149459ec7bc696a15785ae7f0d77777d9f95edefb4da0775f9e005c25cd8cfe17d20899649fb17c6fc928eb9e0bbc0baddce26afc773d300c54728b04bd6
7
+ data.tar.gz: b599664094c01fc88030478e9076ad72a73ceb6bb3aa4b3a64240193694f0d47f6a34bbbd2ab8ce1188c45d6bbd6322d91e91f157362de0a8a6307c002e6084a
@@ -1,5 +1,42 @@
1
1
  # Release History
2
2
 
3
+ ### 1.9.0 / 2020-07-21
4
+
5
+ #### Features
6
+
7
+ * Add support for server-side flow control
8
+
9
+ ### 1.8.0 / 2020-06-29
10
+
11
+ #### Features
12
+
13
+ * Add Subscription#filter
14
+
15
+ ### 1.7.1 / 2020-05-28
16
+
17
+ #### Documentation
18
+
19
+ * Fix a few broken links
20
+
21
+ ### 1.7.0 / 2020-05-21
22
+
23
+ #### Features
24
+
25
+ * Add Retry Policy support
26
+ * Add RetryPolicy
27
+ * Add retry_policy param to Topic#subscribe
28
+ * Add Subscription#retry_policy
29
+ * Add Subscription#retry_policy=
30
+ * Set client-scoped UUID in initial StreamingPullRequest#client_id
31
+
32
+ ### 1.6.1 / 2020-05-06
33
+
34
+ #### Documentation
35
+
36
+ * Fix example in Emulator documentation
37
+ * Remove experimental notice from ReceivedMessage#delivery_attempt
38
+ * Wrap example URLs in backticks
39
+
3
40
  ### 1.6.0 / 2020-04-06
4
41
 
5
42
  #### Features
@@ -17,7 +17,7 @@ require "google/cloud/pubsub"
17
17
  # Make Pub/Sub use the emulator
18
18
  ENV["PUBSUB_EMULATOR_HOST"] = "localhost:8918"
19
19
 
20
- pubsub = Google::Cloud::PubSub.new "emulator-project-id"
20
+ pubsub = Google::Cloud::PubSub.new project_id:"emulator-project-id"
21
21
 
22
22
  # Get a topic in the current project
23
23
  my_topic = pubsub.new_topic "my-topic"
@@ -24,14 +24,8 @@ improved, *please* create a new issue on GitHub so we can talk about it.
24
24
 
25
25
  - [New issue][gh-ruby]
26
26
 
27
- Or, you can ask questions on the [Google Cloud Platform Slack][slack-ruby]. You
28
- can use the "ruby" channel for general Ruby questions, or use the
29
- "google-cloud-ruby" channel if you have questions about this gem in particular.
30
-
31
27
  [so-ruby]: http://stackoverflow.com/questions/tagged/google-cloud-platform+ruby+pubsub
32
28
 
33
- [gh-search-ruby]: https://github.com/googlecloudplatform/google-cloud-ruby/issues?q=label%3A%22api%3A+pubsub%22
34
-
35
- [gh-ruby]: https://github.com/googlecloudplatform/google-cloud-ruby/issues/new
29
+ [gh-search-ruby]: https://github.com/googleapis/google-cloud-ruby/issues?q=label%3A%22api%3A+pubsub%22
36
30
 
37
- [slack-ruby]: https://gcp-slack.appspot.com/
31
+ [gh-ruby]: https://github.com/googleapis/google-cloud-ruby/issues/new
@@ -78,11 +78,6 @@ module Google
78
78
  # The first delivery of a given message will have this value as `1`. The value is calculated at best effort and
79
79
  # is approximate.
80
80
  #
81
- # EXPERIMENTAL: This feature is part of a closed alpha release and is available only to whitelisted partners.
82
- # This method will return `nil` if a dead letter policy is not set on the subscription. This API might be
83
- # changed in backward-incompatible ways and is not recommended for production use. It is not subject to any SLA
84
- # or deprecation policy.
85
- #
86
81
  # @return [Integer, nil] A delivery attempt value of `1` or greater, or `nil` if a dead letter policy is not set
87
82
  # on the subscription.
88
83
  #
@@ -0,0 +1,90 @@
1
+ # Copyright 2016 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+
16
+ require "google/cloud/errors"
17
+
18
+ module Google
19
+ module Cloud
20
+ module PubSub
21
+ ##
22
+ # # RetryPolicy
23
+ #
24
+ # An immutable Retry Policy value object that specifies how Cloud Pub/Sub retries message delivery.
25
+ #
26
+ # Retry delay will be exponential based on provided minimum and maximum backoffs. (See [Exponential
27
+ # backoff](https://en.wikipedia.org/wiki/Exponential_backoff).)
28
+ #
29
+ # Retry Policy will be triggered on NACKs or acknowledgement deadline exceeded events for a given message.
30
+ #
31
+ # Retry Policy is implemented on a best effort basis. At times, the delay between consecutive deliveries may not
32
+ # match the configuration. That is, delay can be more or less than configured backoff.
33
+ #
34
+ # **EXPERIMENTAL:** This API might be changed in backward-incompatible ways and is not recommended for production
35
+ # use. It is not subject to any SLA or deprecation policy.
36
+ #
37
+ # @attr [Numeric] minimum_backoff The minimum delay between consecutive deliveries of a given message. Value
38
+ # should be between 0 and 600 seconds. The default value is 10 seconds.
39
+ # @attr [Numeric] maximum_backoff The maximum delay between consecutive deliveries of a given message. Value
40
+ # should be between 0 and 600 seconds. The default value is 600 seconds.
41
+ #
42
+ # @example
43
+ # require "google/cloud/pubsub"
44
+ #
45
+ # pubsub = Google::Cloud::PubSub.new
46
+ #
47
+ # sub = pubsub.subscription "my-topic-sub"
48
+ #
49
+ # sub.retry_policy = Google::Cloud::PubSub::RetryPolicy.new minimum_backoff: 5, maximum_backoff: 300
50
+ #
51
+ # sub.retry_policy.minimum_backoff #=> 5
52
+ # sub.retry_policy.maximum_backoff #=> 300
53
+ #
54
+ class RetryPolicy
55
+ attr_reader :minimum_backoff, :maximum_backoff
56
+
57
+ ##
58
+ # Creates a new, immutable RetryPolicy value object.
59
+ #
60
+ # @attr [Numeric, nil] minimum_backoff The minimum delay between consecutive deliveries of a given message.
61
+ # Value should be between 0 and 600 seconds. If `nil` is provided, the default value is 10 seconds.
62
+ # @attr [Numeric, nil] maximum_backoff The maximum delay between consecutive deliveries of a given message.
63
+ # Value should be between 0 and 600 seconds. If `nil` is provided, the default value is 600 seconds.
64
+ #
65
+ def initialize minimum_backoff: nil, maximum_backoff: nil
66
+ @minimum_backoff = minimum_backoff
67
+ @maximum_backoff = maximum_backoff
68
+ end
69
+
70
+ ##
71
+ # @private Convert the RetryPolicy to a Google::Cloud::PubSub::V1::RetryPolicy object.
72
+ def to_grpc
73
+ Google::Cloud::PubSub::V1::RetryPolicy.new(
74
+ minimum_backoff: Convert.number_to_duration(minimum_backoff),
75
+ maximum_backoff: Convert.number_to_duration(maximum_backoff)
76
+ )
77
+ end
78
+
79
+ ##
80
+ # @private New RetryPolicy from a Google::Cloud::PubSub::V1::RetryPolicy object.
81
+ def self.from_grpc grpc
82
+ new(
83
+ minimum_backoff: Convert.duration_to_number(grpc.minimum_backoff),
84
+ maximum_backoff: Convert.duration_to_number(grpc.maximum_backoff)
85
+ )
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
@@ -19,6 +19,7 @@ require "google/cloud/pubsub/convert"
19
19
  require "google/cloud/pubsub/version"
20
20
  require "google/cloud/pubsub/v1"
21
21
  require "google/gax/errors"
22
+ require "securerandom"
22
23
 
23
24
  module Google
24
25
  module Cloud
@@ -28,6 +29,12 @@ module Google
28
29
  # methods.
29
30
  class Service
30
31
  attr_accessor :project, :credentials, :host, :timeout, :client_config
32
+ ###
33
+ # The same client_id is used across all streaming pull connections that are created by this client. This is
34
+ # intentional, as it indicates to the server that any guarantees, such as message ordering, made for a stream
35
+ # that is disconnected will be made for the stream that is created to replace it. The attr_accessor allows the
36
+ # value to be replaced for unit testing.
37
+ attr_accessor :client_id
31
38
 
32
39
  ##
33
40
  # Creates a new Service instance.
@@ -38,6 +45,7 @@ module Google
38
45
  @host = host || V1::PublisherClient::SERVICE_ADDRESS
39
46
  @timeout = timeout
40
47
  @client_config = client_config || {}
48
+ @client_id = SecureRandom.uuid.freeze
41
49
  end
42
50
 
43
51
  def channel
@@ -233,21 +241,19 @@ module Google
233
241
  push_endpoint: options[:endpoint],
234
242
  attributes: (options[:attributes] || {}).to_h
235
243
  end
236
- deadline = options[:deadline]
237
- retain_acked = options[:retain_acked]
238
244
  mrd = Convert.number_to_duration options[:retention]
239
- labels = options[:labels]
240
- message_ordering = options[:message_ordering]
241
245
  execute do
242
246
  subscriber.create_subscription \
243
247
  name, topic,
244
248
  push_config: push_config,
245
- ack_deadline_seconds: deadline,
246
- retain_acked_messages: retain_acked,
249
+ ack_deadline_seconds: options[:deadline],
250
+ retain_acked_messages: options[:retain_acked],
247
251
  message_retention_duration: mrd,
248
- labels: labels,
249
- enable_message_ordering: message_ordering,
252
+ labels: options[:labels],
253
+ enable_message_ordering: options[:message_ordering],
254
+ filter: options[:filter],
250
255
  dead_letter_policy: dead_letter_policy(options),
256
+ retry_policy: options[:retry_policy],
251
257
  options: default_options
252
258
  end
253
259
  end
@@ -363,6 +363,9 @@ module Google
363
363
  req.stream_ack_deadline_seconds = @subscriber.deadline
364
364
  req.modify_deadline_ack_ids += @inventory.ack_ids
365
365
  req.modify_deadline_seconds += @inventory.ack_ids.map { @subscriber.deadline }
366
+ req.client_id = @subscriber.service.client_id
367
+ req.max_outstanding_messages = @inventory.limit
368
+ req.max_outstanding_bytes = @inventory.bytesize
366
369
  end
367
370
  end
368
371
 
@@ -18,6 +18,7 @@ require "google/cloud/errors"
18
18
  require "google/cloud/pubsub/subscription/list"
19
19
  require "google/cloud/pubsub/subscription/push_config"
20
20
  require "google/cloud/pubsub/received_message"
21
+ require "google/cloud/pubsub/retry_policy"
21
22
  require "google/cloud/pubsub/snapshot"
22
23
  require "google/cloud/pubsub/subscriber"
23
24
  require "google/cloud/pubsub/v1"
@@ -188,7 +189,7 @@ module Google
188
189
  ##
189
190
  # Returns the URL locating the endpoint to which messages should be
190
191
  # pushed. For example, a Webhook endpoint might use
191
- # "https://example.com/push".
192
+ # `https://example.com/push`.
192
193
  #
193
194
  # Makes an API call to retrieve the endpoint value when called on a
194
195
  # reference object. See {#reference?}.
@@ -202,7 +203,7 @@ module Google
202
203
 
203
204
  ##
204
205
  # Sets the URL locating the endpoint to which messages should be pushed.
205
- # For example, a Webhook endpoint might use "https://example.com/push".
206
+ # For example, a Webhook endpoint might use `https://example.com/push`.
206
207
  #
207
208
  # @param [String] new_endpoint The new endpoint value.
208
209
  #
@@ -352,6 +353,18 @@ module Google
352
353
  @resource_name = nil
353
354
  end
354
355
 
356
+ ##
357
+ # An expression written in the Cloud Pub/Sub filter language. If non-empty, then only {Message} instances whose
358
+ # `attributes` field matches the filter are delivered on this subscription. If empty, then no messages are
359
+ # filtered out.
360
+ #
361
+ # @return [String] The frozen filter string.
362
+ #
363
+ def filter
364
+ ensure_grpc!
365
+ @grpc.filter.freeze
366
+ end
367
+
355
368
  ##
356
369
  # Returns the {Topic} to which dead letter messages should be published if a dead letter policy is configured,
357
370
  # otherwise `nil`. Dead lettering is done on a best effort basis. The same message might be dead lettered
@@ -483,6 +496,65 @@ module Google
483
496
  @resource_name = nil
484
497
  end
485
498
 
499
+ ##
500
+ # A policy that specifies how Cloud Pub/Sub retries message delivery for this subscription. If `nil`, the
501
+ # default retry policy is applied. This generally implies that messages will be retried as soon as possible
502
+ # for healthy subscribers. Retry Policy will be triggered on NACKs or acknowledgement deadline exceeded events
503
+ # for a given message.
504
+ #
505
+ # **EXPERIMENTAL:** This API might be changed in backward-incompatible ways and is not recommended for
506
+ # production use. It is not subject to any SLA or deprecation policy.
507
+ #
508
+ # @return [RetryPolicy, nil] The retry policy for the subscription, or `nil`.
509
+ #
510
+ # @example
511
+ # require "google/cloud/pubsub"
512
+ #
513
+ # pubsub = Google::Cloud::PubSub.new
514
+ #
515
+ # sub = pubsub.subscription "my-topic-sub"
516
+ #
517
+ # sub.retry_policy = Google::Cloud::PubSub::RetryPolicy.new minimum_backoff: 5, maximum_backoff: 300
518
+ #
519
+ # sub.retry_policy.minimum_backoff #=> 5
520
+ # sub.retry_policy.maximum_backoff #=> 300
521
+ #
522
+ def retry_policy
523
+ ensure_grpc!
524
+ return nil unless @grpc.retry_policy
525
+ RetryPolicy.from_grpc @grpc.retry_policy
526
+ end
527
+
528
+ ##
529
+ # Sets a policy that specifies how Cloud Pub/Sub retries message delivery for this subscription. If `nil`, the
530
+ # default retry policy is applied. This generally implies that messages will be retried as soon as possible
531
+ # for healthy subscribers. Retry Policy will be triggered on NACKs or acknowledgement deadline exceeded events
532
+ # for a given message.
533
+ #
534
+ # **EXPERIMENTAL:** This API might be changed in backward-incompatible ways and is not recommended for
535
+ # production use. It is not subject to any SLA or deprecation policy.
536
+ #
537
+ # @param [RetryPolicy, nil] new_retry_policy A new retry policy for the subscription, or `nil`.
538
+ #
539
+ # @example
540
+ # require "google/cloud/pubsub"
541
+ #
542
+ # pubsub = Google::Cloud::PubSub.new
543
+ #
544
+ # sub = pubsub.subscription "my-topic-sub"
545
+ #
546
+ # sub.retry_policy = Google::Cloud::PubSub::RetryPolicy.new minimum_backoff: 5, maximum_backoff: 300
547
+ #
548
+ # sub.retry_policy.minimum_backoff #=> 5
549
+ # sub.retry_policy.maximum_backoff #=> 300
550
+ #
551
+ def retry_policy= new_retry_policy
552
+ ensure_grpc!
553
+ new_retry_policy = new_retry_policy.to_grpc if new_retry_policy
554
+ update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, retry_policy: new_retry_policy
555
+ @grpc = service.update_subscription update_grpc, :retry_policy
556
+ end
557
+
486
558
  ##
487
559
  # Whether message ordering has been enabled. When enabled, messages
488
560
  # published with the same `ordering_key` will be delivered in the order
@@ -52,7 +52,7 @@ module Google
52
52
 
53
53
  ##
54
54
  # A URL locating the endpoint to which messages should be pushed. For
55
- # example, a Webhook endpoint might use "https://example.com/push".
55
+ # example, a Webhook endpoint might use `https://example.com/push`.
56
56
  #
57
57
  # @return [String]
58
58
  def endpoint
@@ -62,7 +62,7 @@ module Google
62
62
  ##
63
63
  # Sets the URL locating the endpoint to which messages should be
64
64
  # pushed. For example, a Webhook endpoint might use
65
- # "https://example.com/push".
65
+ # `https://example.com/push`.
66
66
  #
67
67
  # @param [String, nil] new_endpoint New URL value
68
68
  def endpoint= new_endpoint
@@ -19,6 +19,7 @@ require "google/cloud/pubsub/async_publisher"
19
19
  require "google/cloud/pubsub/batch_publisher"
20
20
  require "google/cloud/pubsub/subscription"
21
21
  require "google/cloud/pubsub/policy"
22
+ require "google/cloud/pubsub/retry_policy"
22
23
 
23
24
  module Google
24
25
  module Cloud
@@ -285,6 +286,9 @@ module Google
285
286
  # Managing Labels](https://cloud.google.com/pubsub/docs/labels).
286
287
  # @param [Boolean] message_ordering Whether to enable message ordering
287
288
  # on the subscription.
289
+ # @param [String] filter An expression written in the Cloud Pub/Sub filter language. If non-empty, then only
290
+ # {Message} instances whose `attributes` field matches the filter are delivered on this subscription. If
291
+ # empty, then no messages are filtered out. Optional.
288
292
  # @param [Topic] dead_letter_topic The {Topic} to which dead letter messages for the subscription should be
289
293
  # published. Dead lettering is done on a best effort basis. The same message might be dead lettered multiple
290
294
  # times. The Cloud Pub/Sub service account associated with the enclosing subscription's parent project (i.e.,
@@ -297,6 +301,13 @@ module Google
297
301
  # the subscription's dead letter policy. Dead lettering is done on a best effort basis. The same message might
298
302
  # be dead lettered multiple times. The value must be between 5 and 100. If this parameter is 0, a default
299
303
  # value of 5 is used. The `dead_letter_topic` must also be set.
304
+ # @param [RetryPolicy] retry_policy A policy that specifies how Cloud Pub/Sub retries message delivery for
305
+ # this subscription. If not set, the default retry policy is applied. This generally implies that messages
306
+ # will be retried as soon as possible for healthy subscribers. Retry Policy will be triggered on NACKs or
307
+ # acknowledgement deadline exceeded events for a given message.
308
+ #
309
+ # **EXPERIMENTAL:** This API might be changed in backward-incompatible ways and is not recommended for
310
+ # production use. It is not subject to any SLA or deprecation policy.
300
311
  #
301
312
  # @return [Google::Cloud::PubSub::Subscription]
302
313
  #
@@ -340,17 +351,29 @@ module Google
340
351
  # dead_letter_topic: dead_letter_topic,
341
352
  # dead_letter_max_delivery_attempts: 10
342
353
  #
354
+ # @example Configure a Retry Policy:
355
+ # require "google/cloud/pubsub"
356
+ #
357
+ # pubsub = Google::Cloud::PubSub.new
358
+ #
359
+ # topic = pubsub.topic "my-topic"
360
+ #
361
+ # retry_policy = Google::Cloud::PubSub::RetryPolicy.new minimum_backoff: 5, maximum_backoff: 300
362
+ # sub = topic.subscribe "my-topic-sub", retry_policy: retry_policy
363
+ #
343
364
  def subscribe subscription_name, deadline: nil, retain_acked: false, retention: nil, endpoint: nil, labels: nil,
344
- message_ordering: nil, dead_letter_topic: nil, dead_letter_max_delivery_attempts: nil
365
+ message_ordering: nil, filter: nil, dead_letter_topic: nil,
366
+ dead_letter_max_delivery_attempts: nil, retry_policy: nil
345
367
  ensure_service!
346
368
  options = { deadline: deadline, retain_acked: retain_acked, retention: retention, endpoint: endpoint,
347
- labels: labels, message_ordering: message_ordering,
369
+ labels: labels, message_ordering: message_ordering, filter: filter,
348
370
  dead_letter_max_delivery_attempts: dead_letter_max_delivery_attempts }
349
371
  options[:dead_letter_topic_name] = dead_letter_topic.name if dead_letter_topic
350
372
  if options[:dead_letter_max_delivery_attempts] && !options[:dead_letter_topic_name]
351
373
  # Service error message "3:Invalid resource name given (name=)." does not identify param.
352
374
  raise ArgumentError, "dead_letter_topic is required with dead_letter_max_delivery_attempts"
353
375
  end
376
+ options[:retry_policy] = retry_policy.to_grpc if retry_policy
354
377
  grpc = service.create_subscription name, subscription_name, options
355
378
  Subscription.from_grpc grpc, service
356
379
  end
@@ -17,6 +17,7 @@ module Google
17
17
  module Cloud
18
18
  module PubSub
19
19
  module V1
20
+ # A policy constraining the storage of messages published to the topic.
20
21
  # @!attribute [rw] allowed_persistence_regions
21
22
  # @return [Array<String>]
22
23
  # A list of IDs of GCP regions where messages that are published to the topic
@@ -67,7 +68,8 @@ module Google
67
68
  # @!attribute [rw] attributes
68
69
  # @return [Hash{String => String}]
69
70
  # Attributes for this message. If this field is empty, the message must
70
- # contain non-empty data.
71
+ # contain non-empty data. This can be used to filter messages on the
72
+ # subscription.
71
73
  # @!attribute [rw] message_id
72
74
  # @return [String]
73
75
  # ID of this message, assigned by the server when the message is published.
@@ -107,9 +109,9 @@ module Google
107
109
  # @return [Google::Protobuf::FieldMask]
108
110
  # Required. Indicates which fields in the provided topic to update. Must be
109
111
  # specified and non-empty. Note that if `update_mask` contains
110
- # "message_storage_policy" then the new value will be determined based on the
111
- # policy configured at the project or organization level. The
112
- # `message_storage_policy` must not be set in the `topic` provided above.
112
+ # "message_storage_policy" but the `message_storage_policy` is not set in
113
+ # the `topic` provided above, then the updated value is determined by the
114
+ # policy configured at the project or organization level.
113
115
  class UpdateTopicRequest; end
114
116
 
115
117
  # Request for the Publish method.
@@ -173,7 +175,7 @@ module Google
173
175
  # Response for the `ListTopicSubscriptions` method.
174
176
  # @!attribute [rw] subscriptions
175
177
  # @return [Array<String>]
176
- # The names of the subscriptions that match the request.
178
+ # The names of subscriptions attached to the topic specified in the request.
177
179
  # @!attribute [rw] next_page_token
178
180
  # @return [String]
179
181
  # If not empty, indicates that there may be more subscriptions that match
@@ -214,6 +216,17 @@ module Google
214
216
  # Format is `projects/{project}/topics/{topic}`.
215
217
  class DeleteTopicRequest; end
216
218
 
219
+ # Request for the DetachSubscription method.
220
+ # @!attribute [rw] subscription
221
+ # @return [String]
222
+ # Required. The subscription to detach.
223
+ # Format is `projects/{project}/subscriptions/{subscription}`.
224
+ class DetachSubscriptionRequest; end
225
+
226
+ # Response for the DetachSubscription method.
227
+ # Reserved for future use.
228
+ class DetachSubscriptionResponse; end
229
+
217
230
  # A subscription resource.
218
231
  # @!attribute [rw] name
219
232
  # @return [String]
@@ -295,13 +308,11 @@ module Google
295
308
  # value for `expiration_policy.ttl` is 1 day.
296
309
  # @!attribute [rw] filter
297
310
  # @return [String]
298
- # An expression written in the Cloud Pub/Sub filter language. If non-empty,
311
+ # An expression written in the Pub/Sub [filter
312
+ # language](https://cloud.google.com/pubsub/docs/filtering). If non-empty,
299
313
  # then only `PubsubMessage`s whose `attributes` field matches the filter are
300
314
  # delivered on this subscription. If empty, then no messages are filtered
301
315
  # out.
302
- # <b>EXPERIMENTAL:</b> This feature is part of a closed alpha release. This
303
- # API might be changed in backward-incompatible ways and is not recommended
304
- # for production use. It is not subject to any SLA or deprecation policy.
305
316
  # @!attribute [rw] dead_letter_policy
306
317
  # @return [Google::Cloud::PubSub::V1::DeadLetterPolicy]
307
318
  # A policy that specifies the conditions for dead lettering messages in
@@ -312,21 +323,22 @@ module Google
312
323
  # parent project (i.e.,
313
324
  # service-\\{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have
314
325
  # permission to Acknowledge() messages on this subscription.
315
- # <b>EXPERIMENTAL:</b> This feature is part of a closed alpha release. This
316
- # API might be changed in backward-incompatible ways and is not recommended
317
- # for production use. It is not subject to any SLA or deprecation policy.
318
326
  # @!attribute [rw] retry_policy
319
327
  # @return [Google::Cloud::PubSub::V1::RetryPolicy]
320
- # A policy that specifies how Cloud Pub/Sub retries message delivery for this
328
+ # A policy that specifies how Pub/Sub retries message delivery for this
321
329
  # subscription.
322
330
  #
323
331
  # If not set, the default retry policy is applied. This generally implies
324
332
  # that messages will be retried as soon as possible for healthy subscribers.
325
333
  # RetryPolicy will be triggered on NACKs or acknowledgement deadline
326
334
  # exceeded events for a given message.
327
- # <b>EXPERIMENTAL:</b> This API might be changed in backward-incompatible
328
- # ways and is not recommended for production use. It is not subject to any
329
- # SLA or deprecation policy.
335
+ # @!attribute [rw] detached
336
+ # @return [true, false]
337
+ # Indicates whether the subscription is detached from its topic. Detached
338
+ # subscriptions don't receive messages from their topic and don't retain any
339
+ # backlog. `Pull` and `StreamingPull` requests will return
340
+ # FAILED_PRECONDITION. If the subscription is a push subscription, pushes to
341
+ # the endpoint will not be made.
330
342
  class Subscription; end
331
343
 
332
344
  # A policy that specifies how Cloud Pub/Sub retries message delivery.
@@ -458,8 +470,11 @@ module Google
458
470
  # The message.
459
471
  # @!attribute [rw] delivery_attempt
460
472
  # @return [Integer]
461
- # Delivery attempt counter is 1 + (the sum of number of NACKs and number of
462
- # ack_deadline exceeds) for this message.
473
+ # The approximate number of times that Cloud Pub/Sub has attempted to deliver
474
+ # the associated message to a subscriber.
475
+ #
476
+ # More precisely, this is 1 + (number of NACKs) +
477
+ # (number of ack_deadline exceeds) for this message.
463
478
  #
464
479
  # A NACK is any call to ModifyAckDeadline with a 0 deadline. An ack_deadline
465
480
  # exceeds event is whenever a message is not acknowledged within
@@ -467,13 +482,10 @@ module Google
467
482
  # Subscription.ackDeadlineSeconds, but may get extended automatically by
468
483
  # the client library.
469
484
  #
470
- # The first delivery of a given message will have this value as 1. The value
471
- # is calculated at best effort and is approximate.
485
+ # Upon the first delivery of a given message, `delivery_attempt` will have a
486
+ # value of 1. The value is calculated at best effort and is approximate.
472
487
  #
473
488
  # If a DeadLetterPolicy is not set on the subscription, this will be 0.
474
- # <b>EXPERIMENTAL:</b> This feature is part of a closed alpha release. This
475
- # API might be changed in backward-incompatible ways and is not recommended
476
- # for production use. It is not subject to any SLA or deprecation policy.
477
489
  class ReceivedMessage; end
478
490
 
479
491
  # Request for the GetSubscription method.
@@ -653,6 +665,28 @@ module Google
653
665
  # to the same value so that state associated with the old stream can be
654
666
  # transferred to the new stream. The same client_id should not be used for
655
667
  # different client instances.
668
+ # @!attribute [rw] max_outstanding_messages
669
+ # @return [Integer]
670
+ # Flow control settings for the maximum number of outstanding messages. When
671
+ # there are `max_outstanding_messages` or more currently sent to the
672
+ # streaming pull client that have not yet been acked or nacked, the server
673
+ # stops sending more messages. The sending of messages resumes once the
674
+ # number of outstanding messages is less than this value. If the value is
675
+ # <= 0, there is no limit to the number of outstanding messages. This
676
+ # property can only be set on the initial StreamingPullRequest. If it is set
677
+ # on a subsequent request, the stream will be aborted with status
678
+ # `INVALID_ARGUMENT`.
679
+ # @!attribute [rw] max_outstanding_bytes
680
+ # @return [Integer]
681
+ # Flow control settings for the maximum number of outstanding bytes. When
682
+ # there are `max_outstanding_bytes` or more worth of messages currently sent
683
+ # to the streaming pull client that have not yet been acked or nacked, the
684
+ # server will stop sending more messages. The sending of messages resumes
685
+ # once the number of outstanding bytes is less than this value. If the value
686
+ # is <= 0, there is no limit to the number of outstanding bytes. This
687
+ # property can only be set on the initial StreamingPullRequest. If it is set
688
+ # on a subsequent request, the stream will be aborted with status
689
+ # `INVALID_ARGUMENT`.
656
690
  class StreamingPullRequest; end
657
691
 
658
692
  # Response for the `StreamingPull` method. This response is used to stream
@@ -98,6 +98,12 @@ module Google
98
98
 
99
99
  private_constant :PROJECT_PATH_TEMPLATE
100
100
 
101
+ SUBSCRIPTION_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
102
+ "projects/{project}/subscriptions/{subscription}"
103
+ )
104
+
105
+ private_constant :SUBSCRIPTION_PATH_TEMPLATE
106
+
101
107
  TOPIC_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
102
108
  "projects/{project}/topics/{topic}"
103
109
  )
@@ -113,6 +119,17 @@ module Google
113
119
  )
114
120
  end
115
121
 
122
+ # Returns a fully-qualified subscription resource name string.
123
+ # @param project [String]
124
+ # @param subscription [String]
125
+ # @return [String]
126
+ def self.subscription_path project, subscription
127
+ SUBSCRIPTION_PATH_TEMPLATE.render(
128
+ :"project" => project,
129
+ :"subscription" => subscription
130
+ )
131
+ end
132
+
116
133
  # Returns a fully-qualified topic resource name string.
117
134
  # @param project [String]
118
135
  # @param topic [String]
@@ -336,6 +353,14 @@ module Google
336
353
  {'resource' => request.resource}
337
354
  end
338
355
  )
356
+ @detach_subscription = Google::Gax.create_api_call(
357
+ @publisher_stub.method(:detach_subscription),
358
+ defaults["detach_subscription"],
359
+ exception_transformer: exception_transformer,
360
+ params_extractor: proc do |request|
361
+ {'subscription' => request.subscription}
362
+ end
363
+ )
339
364
  end
340
365
 
341
366
  # Service calls
@@ -407,9 +432,9 @@ module Google
407
432
  # @param update_mask [Google::Protobuf::FieldMask | Hash]
408
433
  # Required. Indicates which fields in the provided topic to update. Must be
409
434
  # specified and non-empty. Note that if `update_mask` contains
410
- # "message_storage_policy" then the new value will be determined based on the
411
- # policy configured at the project or organization level. The
412
- # `message_storage_policy` must not be set in the `topic` provided above.
435
+ # "message_storage_policy" but the `message_storage_policy` is not set in
436
+ # the `topic` provided above, then the updated value is determined by the
437
+ # policy configured at the project or organization level.
413
438
  # A hash of the same form as `Google::Protobuf::FieldMask`
414
439
  # can also be provided.
415
440
  # @param options [Google::Gax::CallOptions]
@@ -572,7 +597,7 @@ module Google
572
597
  @list_topics.call(req, options, &block)
573
598
  end
574
599
 
575
- # Lists the names of the subscriptions on this topic.
600
+ # Lists the names of the attached subscriptions on this topic.
576
601
  #
577
602
  # @param topic [String]
578
603
  # Required. The name of the topic that subscriptions are attached to.
@@ -725,8 +750,8 @@ module Google
725
750
  # Sets the access control policy on the specified resource. Replaces
726
751
  # any existing policy.
727
752
  #
728
- # Can return Public Errors: NOT_FOUND, INVALID_ARGUMENT and
729
- # PERMISSION_DENIED
753
+ # Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
754
+ # errors.
730
755
  #
731
756
  # @param resource [String]
732
757
  # REQUIRED: The resource for which the policy is being specified.
@@ -814,7 +839,7 @@ module Google
814
839
 
815
840
  # Returns permissions that a caller has on the specified resource. If the
816
841
  # resource does not exist, this will return an empty set of
817
- # permissions, not a NOT_FOUND error.
842
+ # permissions, not a `NOT_FOUND` error.
818
843
  #
819
844
  # Note: This operation is designed to be used for building
820
845
  # permission-aware UIs and command-line tools, not for authorization
@@ -860,6 +885,40 @@ module Google
860
885
  req = Google::Gax::to_proto(req, Google::Iam::V1::TestIamPermissionsRequest)
861
886
  @test_iam_permissions.call(req, options, &block)
862
887
  end
888
+
889
+ # Detaches a subscription from this topic. All messages retained in the
890
+ # subscription are dropped. Subsequent `Pull` and `StreamingPull` requests
891
+ # will return FAILED_PRECONDITION. If the subscription is a push
892
+ # subscription, pushes to the endpoint will stop.
893
+ #
894
+ # @param subscription [String]
895
+ # Required. The subscription to detach.
896
+ # Format is `projects/{project}/subscriptions/{subscription}`.
897
+ # @param options [Google::Gax::CallOptions]
898
+ # Overrides the default settings for this call, e.g, timeout,
899
+ # retries, etc.
900
+ # @yield [result, operation] Access the result along with the RPC operation
901
+ # @yieldparam result [Google::Cloud::PubSub::V1::DetachSubscriptionResponse]
902
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
903
+ # @return [Google::Cloud::PubSub::V1::DetachSubscriptionResponse]
904
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
905
+ # @example
906
+ # require "google/cloud/pubsub"
907
+ #
908
+ # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
909
+ # formatted_subscription = Google::Cloud::PubSub::V1::PublisherClient.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
910
+ # response = publisher_client.detach_subscription(formatted_subscription)
911
+
912
+ def detach_subscription \
913
+ subscription,
914
+ options: nil,
915
+ &block
916
+ req = {
917
+ subscription: subscription
918
+ }.delete_if { |_, v| v.nil? }
919
+ req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::DetachSubscriptionRequest)
920
+ @detach_subscription.call(req, options, &block)
921
+ end
863
922
  end
864
923
  end
865
924
  end
@@ -7,6 +7,7 @@
7
7
  "UNAVAILABLE",
8
8
  "UNKNOWN"
9
9
  ],
10
+ "non_idempotent2": [],
10
11
  "non_idempotent": [
11
12
  "UNAVAILABLE"
12
13
  ],
@@ -107,6 +108,11 @@
107
108
  "timeout_millis": 60000,
108
109
  "retry_codes_name": "non_idempotent",
109
110
  "retry_params_name": "default"
111
+ },
112
+ "DetachSubscription": {
113
+ "timeout_millis": 60000,
114
+ "retry_codes_name": "non_idempotent2",
115
+ "retry_params_name": "default"
110
116
  }
111
117
  }
112
118
  }
@@ -510,13 +510,11 @@ module Google
510
510
  # A hash of the same form as `Google::Cloud::PubSub::V1::ExpirationPolicy`
511
511
  # can also be provided.
512
512
  # @param filter [String]
513
- # An expression written in the Cloud Pub/Sub filter language. If non-empty,
513
+ # An expression written in the Pub/Sub [filter
514
+ # language](https://cloud.google.com/pubsub/docs/filtering). If non-empty,
514
515
  # then only `PubsubMessage`s whose `attributes` field matches the filter are
515
516
  # delivered on this subscription. If empty, then no messages are filtered
516
517
  # out.
517
- # <b>EXPERIMENTAL:</b> This feature is part of a closed alpha release. This
518
- # API might be changed in backward-incompatible ways and is not recommended
519
- # for production use. It is not subject to any SLA or deprecation policy.
520
518
  # @param dead_letter_policy [Google::Cloud::PubSub::V1::DeadLetterPolicy | Hash]
521
519
  # A policy that specifies the conditions for dead lettering messages in
522
520
  # this subscription. If dead_letter_policy is not set, dead lettering
@@ -526,24 +524,24 @@ module Google
526
524
  # parent project (i.e.,
527
525
  # service-\\{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have
528
526
  # permission to Acknowledge() messages on this subscription.
529
- # <b>EXPERIMENTAL:</b> This feature is part of a closed alpha release. This
530
- # API might be changed in backward-incompatible ways and is not recommended
531
- # for production use. It is not subject to any SLA or deprecation policy.
532
527
  # A hash of the same form as `Google::Cloud::PubSub::V1::DeadLetterPolicy`
533
528
  # can also be provided.
534
529
  # @param retry_policy [Google::Cloud::PubSub::V1::RetryPolicy | Hash]
535
- # A policy that specifies how Cloud Pub/Sub retries message delivery for this
530
+ # A policy that specifies how Pub/Sub retries message delivery for this
536
531
  # subscription.
537
532
  #
538
533
  # If not set, the default retry policy is applied. This generally implies
539
534
  # that messages will be retried as soon as possible for healthy subscribers.
540
535
  # RetryPolicy will be triggered on NACKs or acknowledgement deadline
541
536
  # exceeded events for a given message.
542
- # <b>EXPERIMENTAL:</b> This API might be changed in backward-incompatible
543
- # ways and is not recommended for production use. It is not subject to any
544
- # SLA or deprecation policy.
545
537
  # A hash of the same form as `Google::Cloud::PubSub::V1::RetryPolicy`
546
538
  # can also be provided.
539
+ # @param detached [true, false]
540
+ # Indicates whether the subscription is detached from its topic. Detached
541
+ # subscriptions don't receive messages from their topic and don't retain any
542
+ # backlog. `Pull` and `StreamingPull` requests will return
543
+ # FAILED_PRECONDITION. If the subscription is a push subscription, pushes to
544
+ # the endpoint will not be made.
547
545
  # @param options [Google::Gax::CallOptions]
548
546
  # Overrides the default settings for this call, e.g, timeout,
549
547
  # retries, etc.
@@ -573,6 +571,7 @@ module Google
573
571
  filter: nil,
574
572
  dead_letter_policy: nil,
575
573
  retry_policy: nil,
574
+ detached: nil,
576
575
  options: nil,
577
576
  &block
578
577
  req = {
@@ -587,7 +586,8 @@ module Google
587
586
  expiration_policy: expiration_policy,
588
587
  filter: filter,
589
588
  dead_letter_policy: dead_letter_policy,
590
- retry_policy: retry_policy
589
+ retry_policy: retry_policy,
590
+ detached: detached
591
591
  }.delete_if { |_, v| v.nil? }
592
592
  req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::Subscription)
593
593
  @create_subscription.call(req, options, &block)
@@ -1322,8 +1322,8 @@ module Google
1322
1322
  # Sets the access control policy on the specified resource. Replaces
1323
1323
  # any existing policy.
1324
1324
  #
1325
- # Can return Public Errors: NOT_FOUND, INVALID_ARGUMENT and
1326
- # PERMISSION_DENIED
1325
+ # Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
1326
+ # errors.
1327
1327
  #
1328
1328
  # @param resource [String]
1329
1329
  # REQUIRED: The resource for which the policy is being specified.
@@ -1411,7 +1411,7 @@ module Google
1411
1411
 
1412
1412
  # Returns permissions that a caller has on the specified resource. If the
1413
1413
  # resource does not exist, this will return an empty set of
1414
- # permissions, not a NOT_FOUND error.
1414
+ # permissions, not a `NOT_FOUND` error.
1415
1415
  #
1416
1416
  # Note: This operation is designed to be used for building
1417
1417
  # permission-aware UIs and command-line tools, not for authorization
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module PubSub
19
- VERSION = "1.6.0".freeze
19
+ VERSION = "1.9.0".freeze
20
20
  end
21
21
 
22
22
  Pubsub = PubSub unless const_defined? :Pubsub
@@ -73,6 +73,11 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
73
73
  add_message "google.pubsub.v1.DeleteTopicRequest" do
74
74
  optional :topic, :string, 1
75
75
  end
76
+ add_message "google.pubsub.v1.DetachSubscriptionRequest" do
77
+ optional :subscription, :string, 1
78
+ end
79
+ add_message "google.pubsub.v1.DetachSubscriptionResponse" do
80
+ end
76
81
  add_message "google.pubsub.v1.Subscription" do
77
82
  optional :name, :string, 1
78
83
  optional :topic, :string, 2
@@ -86,6 +91,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
86
91
  optional :filter, :string, 12
87
92
  optional :dead_letter_policy, :message, 13, "google.pubsub.v1.DeadLetterPolicy"
88
93
  optional :retry_policy, :message, 14, "google.pubsub.v1.RetryPolicy"
94
+ optional :detached, :bool, 15
89
95
  end
90
96
  add_message "google.pubsub.v1.RetryPolicy" do
91
97
  optional :minimum_backoff, :message, 1, "google.protobuf.Duration"
@@ -161,6 +167,8 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
161
167
  repeated :modify_deadline_ack_ids, :string, 4
162
168
  optional :stream_ack_deadline_seconds, :int32, 5
163
169
  optional :client_id, :string, 6
170
+ optional :max_outstanding_messages, :int64, 7
171
+ optional :max_outstanding_bytes, :int64, 8
164
172
  end
165
173
  add_message "google.pubsub.v1.StreamingPullResponse" do
166
174
  repeated :received_messages, :message, 1, "google.pubsub.v1.ReceivedMessage"
@@ -228,6 +236,8 @@ module Google::Cloud::PubSub::V1
228
236
  ListTopicSnapshotsRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.ListTopicSnapshotsRequest").msgclass
229
237
  ListTopicSnapshotsResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.ListTopicSnapshotsResponse").msgclass
230
238
  DeleteTopicRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.DeleteTopicRequest").msgclass
239
+ DetachSubscriptionRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.DetachSubscriptionRequest").msgclass
240
+ DetachSubscriptionResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.DetachSubscriptionResponse").msgclass
231
241
  Subscription = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.Subscription").msgclass
232
242
  RetryPolicy = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.RetryPolicy").msgclass
233
243
  DeadLetterPolicy = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.DeadLetterPolicy").msgclass
@@ -53,7 +53,7 @@ module Google::Cloud::PubSub::V1
53
53
  rpc :GetTopic, GetTopicRequest, Topic
54
54
  # Lists matching topics.
55
55
  rpc :ListTopics, ListTopicsRequest, ListTopicsResponse
56
- # Lists the names of the subscriptions on this topic.
56
+ # Lists the names of the attached subscriptions on this topic.
57
57
  rpc :ListTopicSubscriptions, ListTopicSubscriptionsRequest, ListTopicSubscriptionsResponse
58
58
  # Lists the names of the snapshots on this topic. Snapshots are used in
59
59
  # <a href="https://cloud.google.com/pubsub/docs/replay-overview">Seek</a>
@@ -68,6 +68,11 @@ module Google::Cloud::PubSub::V1
68
68
  # configuration or subscriptions. Existing subscriptions to this topic are
69
69
  # not deleted, but their `topic` field is set to `_deleted-topic_`.
70
70
  rpc :DeleteTopic, DeleteTopicRequest, Google::Protobuf::Empty
71
+ # Detaches a subscription from this topic. All messages retained in the
72
+ # subscription are dropped. Subsequent `Pull` and `StreamingPull` requests
73
+ # will return FAILED_PRECONDITION. If the subscription is a push
74
+ # subscription, pushes to the endpoint will stop.
75
+ rpc :DetachSubscription, DetachSubscriptionRequest, DetachSubscriptionResponse
71
76
  end
72
77
 
73
78
  Stub = Service.rpc_stub_class
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-pubsub
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Moore
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-04-06 00:00:00.000000000 Z
12
+ date: 2020-07-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: concurrent-ruby
@@ -141,14 +141,14 @@ dependencies:
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: '5.10'
144
+ version: '5.14'
145
145
  type: :development
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '5.10'
151
+ version: '5.14'
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: minitest-autotest
154
154
  requirement: !ruby/object:Gem::Requirement
@@ -278,6 +278,7 @@ files:
278
278
  - lib/google/cloud/pubsub/project.rb
279
279
  - lib/google/cloud/pubsub/publish_result.rb
280
280
  - lib/google/cloud/pubsub/received_message.rb
281
+ - lib/google/cloud/pubsub/retry_policy.rb
281
282
  - lib/google/cloud/pubsub/service.rb
282
283
  - lib/google/cloud/pubsub/snapshot.rb
283
284
  - lib/google/cloud/pubsub/snapshot/list.rb
@@ -329,7 +330,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
329
330
  - !ruby/object:Gem::Version
330
331
  version: '0'
331
332
  requirements: []
332
- rubygems_version: 3.0.6
333
+ rubygems_version: 3.1.3
333
334
  signing_key:
334
335
  specification_version: 4
335
336
  summary: API Client library for Google Cloud Pub/Sub