google-cloud-pubsub 1.0.2 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/AUTHENTICATION.md +16 -54
- data/CHANGELOG.md +464 -0
- data/CONTRIBUTING.md +328 -116
- data/EMULATOR.md +1 -1
- data/LOGGING.md +94 -2
- data/OVERVIEW.md +121 -68
- data/TROUBLESHOOTING.md +2 -8
- data/lib/google/cloud/pubsub/acknowledge_result.rb +79 -0
- data/lib/google/cloud/pubsub/async_publisher/batch.rb +319 -0
- data/lib/google/cloud/pubsub/async_publisher.rb +231 -156
- data/lib/google/cloud/pubsub/batch_publisher.rb +60 -30
- data/lib/google/cloud/pubsub/convert.rb +33 -7
- data/lib/google/cloud/pubsub/credentials.rb +2 -2
- data/lib/google/cloud/pubsub/errors.rb +93 -0
- data/lib/google/cloud/pubsub/flow_controller.rb +137 -0
- data/lib/google/cloud/pubsub/message.rb +45 -4
- data/lib/google/cloud/pubsub/policy.rb +3 -2
- data/lib/google/cloud/pubsub/project.rb +316 -49
- data/lib/google/cloud/pubsub/publish_result.rb +6 -1
- data/lib/google/cloud/pubsub/received_message.rb +171 -10
- data/lib/google/cloud/pubsub/retry_policy.rb +88 -0
- data/lib/google/cloud/pubsub/schema/list.rb +180 -0
- data/lib/google/cloud/pubsub/schema.rb +310 -0
- data/lib/google/cloud/pubsub/service.rb +285 -269
- data/lib/google/cloud/pubsub/snapshot/list.rb +4 -6
- data/lib/google/cloud/pubsub/snapshot.rb +5 -2
- data/lib/google/cloud/pubsub/subscriber/inventory.rb +69 -32
- data/lib/google/cloud/pubsub/subscriber/sequencer.rb +115 -0
- data/lib/google/cloud/pubsub/subscriber/stream.rb +108 -49
- data/lib/google/cloud/pubsub/subscriber/timed_unary_buffer.rb +191 -30
- data/lib/google/cloud/pubsub/subscriber.rb +155 -45
- data/lib/google/cloud/pubsub/subscription/list.rb +4 -6
- data/lib/google/cloud/pubsub/subscription/push_config.rb +55 -31
- data/lib/google/cloud/pubsub/subscription.rb +561 -77
- data/lib/google/cloud/pubsub/topic/list.rb +4 -6
- data/lib/google/cloud/pubsub/topic.rb +372 -52
- data/lib/google/cloud/pubsub/version.rb +1 -1
- data/lib/google/cloud/pubsub.rb +35 -46
- data/lib/google-cloud-pubsub.rb +21 -27
- metadata +26 -189
- data/lib/google/cloud/pubsub/v1/credentials.rb +0 -41
- data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/iam_policy.rb +0 -21
- data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/options.rb +0 -21
- data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/policy.rb +0 -21
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/duration.rb +0 -91
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/empty.rb +0 -29
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/field_mask.rb +0 -222
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/timestamp.rb +0 -113
- data/lib/google/cloud/pubsub/v1/doc/google/pubsub/v1/pubsub.rb +0 -744
- data/lib/google/cloud/pubsub/v1/doc/google/type/expr.rb +0 -19
- data/lib/google/cloud/pubsub/v1/publisher_client.rb +0 -786
- data/lib/google/cloud/pubsub/v1/publisher_client_config.json +0 -105
- data/lib/google/cloud/pubsub/v1/subscriber_client.rb +0 -1385
- data/lib/google/cloud/pubsub/v1/subscriber_client_config.json +0 -138
- data/lib/google/cloud/pubsub/v1.rb +0 -17
- data/lib/google/pubsub/v1/pubsub_pb.rb +0 -249
- data/lib/google/pubsub/v1/pubsub_services_pb.rb +0 -211
@@ -18,8 +18,10 @@ 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"
|
24
|
+
require "google/cloud/pubsub/v1"
|
23
25
|
|
24
26
|
module Google
|
25
27
|
module Cloud
|
@@ -41,12 +43,19 @@ module Google
|
|
41
43
|
# received_message.acknowledge!
|
42
44
|
# end
|
43
45
|
#
|
44
|
-
# #
|
45
|
-
# subscriber.
|
46
|
+
# # Handle exceptions from listener
|
47
|
+
# subscriber.on_error do |exception|
|
48
|
+
# puts "Exception: #{exception.class} #{exception.message}"
|
49
|
+
# end
|
46
50
|
#
|
47
|
-
# #
|
48
|
-
#
|
51
|
+
# # Gracefully shut down the subscriber
|
52
|
+
# at_exit do
|
53
|
+
# subscriber.stop!
|
54
|
+
# end
|
49
55
|
#
|
56
|
+
# # Start background threads that will call the block passed to listen.
|
57
|
+
# subscriber.start
|
58
|
+
# sleep
|
50
59
|
class Subscription
|
51
60
|
##
|
52
61
|
# @private The Service object.
|
@@ -68,7 +77,9 @@ module Google
|
|
68
77
|
##
|
69
78
|
# The name of the subscription.
|
70
79
|
#
|
71
|
-
# @return [String]
|
80
|
+
# @return [String] A fully-qualified subscription name in the form
|
81
|
+
# `projects/{project_id}/subscriptions/{subscription_id}`.
|
82
|
+
#
|
72
83
|
def name
|
73
84
|
return @resource_name if reference?
|
74
85
|
@grpc.name
|
@@ -117,10 +128,8 @@ module Google
|
|
117
128
|
# @param [Integer] new_deadline The new deadline value.
|
118
129
|
#
|
119
130
|
def deadline= new_deadline
|
120
|
-
update_grpc = Google::Cloud::PubSub::V1::Subscription.new
|
121
|
-
|
122
|
-
@grpc = service.update_subscription update_grpc,
|
123
|
-
:ack_deadline_seconds
|
131
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, ack_deadline_seconds: new_deadline
|
132
|
+
@grpc = service.update_subscription update_grpc, :ack_deadline_seconds
|
124
133
|
@resource_name = nil
|
125
134
|
end
|
126
135
|
|
@@ -148,10 +157,9 @@ module Google
|
|
148
157
|
# value.
|
149
158
|
#
|
150
159
|
def retain_acked= new_retain_acked
|
151
|
-
update_grpc = Google::Cloud::PubSub::V1::Subscription.new
|
152
|
-
|
153
|
-
@grpc = service.update_subscription update_grpc,
|
154
|
-
:retain_acked_messages
|
160
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name,
|
161
|
+
retain_acked_messages: !(!new_retain_acked)
|
162
|
+
@grpc = service.update_subscription update_grpc, :retain_acked_messages
|
155
163
|
@resource_name = nil
|
156
164
|
end
|
157
165
|
|
@@ -160,9 +168,8 @@ module Google
|
|
160
168
|
# backlog, from the moment a message is published. If
|
161
169
|
# {#retain_acked} is `true`, then this also configures the retention of
|
162
170
|
# acknowledged messages, and thus configures how far back in time a
|
163
|
-
# {#seek} can be done. Cannot be
|
164
|
-
#
|
165
|
-
# days).
|
171
|
+
# {#seek} can be done. Cannot be less than 600 (10 minutes) or more
|
172
|
+
# than 604,800 (7 days). Default is 604,800 seconds (7 days).
|
166
173
|
#
|
167
174
|
# Makes an API call to retrieve the retention value when called on a
|
168
175
|
# reference object. See {#reference?}.
|
@@ -181,17 +188,34 @@ module Google
|
|
181
188
|
#
|
182
189
|
def retention= new_retention
|
183
190
|
new_retention_duration = Convert.number_to_duration new_retention
|
184
|
-
update_grpc = Google::Cloud::PubSub::V1::Subscription.new
|
185
|
-
|
186
|
-
@grpc = service.update_subscription update_grpc,
|
187
|
-
:message_retention_duration
|
191
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name,
|
192
|
+
message_retention_duration: new_retention_duration
|
193
|
+
@grpc = service.update_subscription update_grpc, :message_retention_duration
|
188
194
|
@resource_name = nil
|
189
195
|
end
|
190
196
|
|
197
|
+
##
|
198
|
+
# Indicates the minimum duration for which a message is retained after
|
199
|
+
# it is published to the subscription's topic. If this field is set,
|
200
|
+
# messages published to the subscription's topic in the last
|
201
|
+
# `topic_message_retention_duration` are always available to subscribers.
|
202
|
+
# Output only. See {Topic#retention}.
|
203
|
+
#
|
204
|
+
# Makes an API call to retrieve the retention value when called on a
|
205
|
+
# reference object. See {#reference?}.
|
206
|
+
#
|
207
|
+
# @return [Numeric, nil] The topic message retention duration in seconds,
|
208
|
+
# or `nil` if not set.
|
209
|
+
#
|
210
|
+
def topic_retention
|
211
|
+
ensure_grpc!
|
212
|
+
Convert.duration_to_number @grpc.topic_message_retention_duration
|
213
|
+
end
|
214
|
+
|
191
215
|
##
|
192
216
|
# Returns the URL locating the endpoint to which messages should be
|
193
217
|
# pushed. For example, a Webhook endpoint might use
|
194
|
-
#
|
218
|
+
# `https://example.com/push`.
|
195
219
|
#
|
196
220
|
# Makes an API call to retrieve the endpoint value when called on a
|
197
221
|
# reference object. See {#reference?}.
|
@@ -200,12 +224,12 @@ module Google
|
|
200
224
|
#
|
201
225
|
def endpoint
|
202
226
|
ensure_grpc!
|
203
|
-
@grpc.push_config
|
227
|
+
@grpc.push_config&.push_endpoint
|
204
228
|
end
|
205
229
|
|
206
230
|
##
|
207
231
|
# Sets the URL locating the endpoint to which messages should be pushed.
|
208
|
-
# For example, a Webhook endpoint might use
|
232
|
+
# For example, a Webhook endpoint might use `https://example.com/push`.
|
209
233
|
#
|
210
234
|
# @param [String] new_endpoint The new endpoint value.
|
211
235
|
#
|
@@ -271,8 +295,7 @@ module Google
|
|
271
295
|
new_config = config.to_grpc
|
272
296
|
|
273
297
|
if old_config != new_config # has the object been changed?
|
274
|
-
update_grpc = Google::Cloud::PubSub::V1::Subscription.new
|
275
|
-
name: name, push_config: new_config
|
298
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, push_config: new_config
|
276
299
|
@grpc = service.update_subscription update_grpc, :push_config
|
277
300
|
end
|
278
301
|
end
|
@@ -280,6 +303,56 @@ module Google
|
|
280
303
|
config.freeze
|
281
304
|
end
|
282
305
|
|
306
|
+
##
|
307
|
+
# Inspect the Subscription's bigquery configuration settings. The
|
308
|
+
# configuration can be changed by modifying the values in the method's
|
309
|
+
# block.
|
310
|
+
#
|
311
|
+
# @yield [bigquery_config] a block for modifying the bigquery configuration
|
312
|
+
# @yieldparam [Google::Cloud::PubSub::V1::BigQueryConfig] bigquery_config
|
313
|
+
#
|
314
|
+
# @return [Google::Cloud::PubSub::V1::BigQueryConfig]
|
315
|
+
#
|
316
|
+
# @example
|
317
|
+
# require "google/cloud/pubsub"
|
318
|
+
#
|
319
|
+
# pubsub = Google::Cloud::PubSub.new
|
320
|
+
#
|
321
|
+
# sub = pubsub.subscription "my-topic-sub"
|
322
|
+
# sub.bigquery_config.table #=> "my-project:dataset-id.table-id"
|
323
|
+
# sub.bigquery_config.use_topic_schema #=> true
|
324
|
+
# sub.bigquery_config.write_metadata #=> false
|
325
|
+
#
|
326
|
+
# @example Update the bigquery configuration by passing a block:
|
327
|
+
# require "google/cloud/pubsub"
|
328
|
+
#
|
329
|
+
# pubsub = Google::Cloud::PubSub.new
|
330
|
+
# sub = pubsub.subscription "my-subscription"
|
331
|
+
#
|
332
|
+
# sub.bigquery_config do |bc|
|
333
|
+
# bc.write_metadata = true
|
334
|
+
# bc.use_topic_schema = false
|
335
|
+
# end
|
336
|
+
#
|
337
|
+
def bigquery_config
|
338
|
+
ensure_service!
|
339
|
+
|
340
|
+
config = reference? ? Google::Cloud::PubSub::V1::BigQueryConfig.new : @grpc.bigquery_config
|
341
|
+
|
342
|
+
if block_given?
|
343
|
+
old_config = config.dup
|
344
|
+
yield config
|
345
|
+
new_config = config
|
346
|
+
|
347
|
+
if old_config != new_config # has the object been changed?
|
348
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, bigquery_config: new_config
|
349
|
+
@grpc = service.update_subscription update_grpc, :bigquery_config
|
350
|
+
end
|
351
|
+
end
|
352
|
+
|
353
|
+
config.freeze
|
354
|
+
end
|
355
|
+
|
283
356
|
##
|
284
357
|
# A hash of user-provided labels associated with this subscription.
|
285
358
|
# Labels can be used to organize and group subscriptions.See [Creating
|
@@ -312,8 +385,7 @@ module Google
|
|
312
385
|
#
|
313
386
|
def labels= new_labels
|
314
387
|
raise ArgumentError, "Value must be a Hash" if new_labels.nil?
|
315
|
-
update_grpc = Google::Cloud::PubSub::V1::Subscription.new
|
316
|
-
name: name, labels: new_labels
|
388
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, labels: new_labels
|
317
389
|
@grpc = service.update_subscription update_grpc, :labels
|
318
390
|
@resource_name = nil
|
319
391
|
end
|
@@ -327,7 +399,7 @@ module Google
|
|
327
399
|
# If {#expires_in=} is not set, a *default* value of of 31 days will be
|
328
400
|
# used. The minimum allowed value is 1 day.
|
329
401
|
#
|
330
|
-
# Makes an API call to retrieve the
|
402
|
+
# Makes an API call to retrieve the expires_in value when called on a
|
331
403
|
# reference object. See {#reference?}.
|
332
404
|
#
|
333
405
|
# @return [Numeric, nil] The expiration duration, or `nil` if unset.
|
@@ -350,16 +422,310 @@ module Google
|
|
350
422
|
# to unset.
|
351
423
|
#
|
352
424
|
def expires_in= ttl
|
353
|
-
new_expiration_policy = Google::
|
354
|
-
ttl: Convert.number_to_duration(ttl)
|
355
|
-
)
|
425
|
+
new_expiration_policy = Google::Cloud::PubSub::V1::ExpirationPolicy.new ttl: Convert.number_to_duration(ttl)
|
356
426
|
|
357
|
-
update_grpc = Google::Cloud::PubSub::V1::Subscription.new
|
358
|
-
name: name, expiration_policy: new_expiration_policy
|
427
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, expiration_policy: new_expiration_policy
|
359
428
|
@grpc = service.update_subscription update_grpc, :expiration_policy
|
360
429
|
@resource_name = nil
|
361
430
|
end
|
362
431
|
|
432
|
+
##
|
433
|
+
# An expression written in the Cloud Pub/Sub filter language. If non-empty, then only {Message} instances whose
|
434
|
+
# `attributes` field matches the filter are delivered on this subscription. If empty, then no messages are
|
435
|
+
# filtered out.
|
436
|
+
#
|
437
|
+
# Makes an API call to retrieve the filter value when called on a reference
|
438
|
+
# object. See {#reference?}.
|
439
|
+
#
|
440
|
+
# @return [String] The frozen filter string.
|
441
|
+
#
|
442
|
+
def filter
|
443
|
+
ensure_grpc!
|
444
|
+
@grpc.filter.freeze
|
445
|
+
end
|
446
|
+
|
447
|
+
##
|
448
|
+
# Returns the {Topic} to which dead letter messages should be published if a dead letter policy is configured,
|
449
|
+
# otherwise `nil`. Dead lettering is done on a best effort basis. The same message might be dead lettered
|
450
|
+
# multiple times.
|
451
|
+
#
|
452
|
+
# See also {#dead_letter_topic=}, {#dead_letter_max_delivery_attempts=}, {#dead_letter_max_delivery_attempts}
|
453
|
+
# and {#remove_dead_letter_policy}.
|
454
|
+
#
|
455
|
+
# Makes an API call to retrieve the topic name when called on a reference object. See {#reference?}.
|
456
|
+
#
|
457
|
+
# @return [Topic, nil]
|
458
|
+
#
|
459
|
+
# @example
|
460
|
+
# require "google/cloud/pubsub"
|
461
|
+
#
|
462
|
+
# pubsub = Google::Cloud::PubSub.new
|
463
|
+
#
|
464
|
+
# sub = pubsub.subscription "my-topic-sub"
|
465
|
+
# sub.dead_letter_topic.name #=> "projects/my-project/topics/my-dead-letter-topic"
|
466
|
+
# sub.dead_letter_max_delivery_attempts #=> 10
|
467
|
+
#
|
468
|
+
def dead_letter_topic
|
469
|
+
ensure_grpc!
|
470
|
+
return nil unless @grpc.dead_letter_policy
|
471
|
+
Topic.from_name @grpc.dead_letter_policy.dead_letter_topic, service
|
472
|
+
end
|
473
|
+
|
474
|
+
##
|
475
|
+
# Sets the {Topic} to which dead letter messages for the subscription should be published. Dead lettering is
|
476
|
+
# done on a best effort basis. The same message might be dead lettered multiple times.
|
477
|
+
# The Cloud Pub/Sub service account associated with the enclosing subscription's parent project (i.e.,
|
478
|
+
# `service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com`) must have permission to Publish() to this
|
479
|
+
# topic.
|
480
|
+
#
|
481
|
+
# The operation will fail if the topic does not exist. Users should ensure that there is a subscription attached
|
482
|
+
# to this topic since messages published to a topic with no subscriptions are lost.
|
483
|
+
#
|
484
|
+
# Makes an API call to retrieve the dead_letter_policy value when called on a
|
485
|
+
# reference object. See {#reference?}.
|
486
|
+
#
|
487
|
+
# See also {#dead_letter_topic}, {#dead_letter_max_delivery_attempts=}, {#dead_letter_max_delivery_attempts}
|
488
|
+
# and {#remove_dead_letter_policy}.
|
489
|
+
#
|
490
|
+
# @param [Topic] new_dead_letter_topic The topic to which dead letter messages for the subscription should be
|
491
|
+
# published.
|
492
|
+
#
|
493
|
+
# @example
|
494
|
+
# require "google/cloud/pubsub"
|
495
|
+
#
|
496
|
+
# pubsub = Google::Cloud::PubSub.new
|
497
|
+
#
|
498
|
+
# sub = pubsub.subscription "my-topic-sub"
|
499
|
+
# dead_letter_topic = pubsub.topic "my-dead-letter-topic", skip_lookup: true
|
500
|
+
# sub.dead_letter_topic = dead_letter_topic
|
501
|
+
#
|
502
|
+
def dead_letter_topic= new_dead_letter_topic
|
503
|
+
ensure_grpc!
|
504
|
+
dead_letter_policy = @grpc.dead_letter_policy || Google::Cloud::PubSub::V1::DeadLetterPolicy.new
|
505
|
+
dead_letter_policy.dead_letter_topic = new_dead_letter_topic.name
|
506
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, dead_letter_policy: dead_letter_policy
|
507
|
+
@grpc = service.update_subscription update_grpc, :dead_letter_policy
|
508
|
+
@resource_name = nil
|
509
|
+
end
|
510
|
+
|
511
|
+
##
|
512
|
+
# Returns the maximum number of delivery attempts for any message in the subscription's dead letter policy if a
|
513
|
+
# dead letter policy is configured, otherwise `nil`. Dead lettering is done on a best effort basis. The same
|
514
|
+
# message might be dead lettered multiple times. The value must be between 5 and 100.
|
515
|
+
#
|
516
|
+
# The number of delivery attempts is defined as 1 + (the sum of number of NACKs and number of times the
|
517
|
+
# acknowledgement deadline has been exceeded for the message). A NACK is any call to ModifyAckDeadline with a 0
|
518
|
+
# deadline. Note that client libraries may automatically extend ack_deadlines.
|
519
|
+
#
|
520
|
+
# This field will be honored on a best effort basis. If this parameter is `nil` or `0`, a default value of `5`
|
521
|
+
# is used.
|
522
|
+
#
|
523
|
+
# See also {#dead_letter_max_delivery_attempts=}, {#dead_letter_topic=}, {#dead_letter_topic}
|
524
|
+
# and {#remove_dead_letter_policy}.
|
525
|
+
#
|
526
|
+
# Makes an API call to retrieve the dead_letter_policy when called on a reference object. See {#reference?}.
|
527
|
+
#
|
528
|
+
# @return [Integer, nil] A value between `5` and `100`, or `nil` if no dead letter policy is configured.
|
529
|
+
#
|
530
|
+
# @example
|
531
|
+
# require "google/cloud/pubsub"
|
532
|
+
#
|
533
|
+
# pubsub = Google::Cloud::PubSub.new
|
534
|
+
#
|
535
|
+
# sub = pubsub.subscription "my-topic-sub"
|
536
|
+
# sub.dead_letter_topic.name #=> "projects/my-project/topics/my-dead-letter-topic"
|
537
|
+
# sub.dead_letter_max_delivery_attempts #=> 10
|
538
|
+
#
|
539
|
+
def dead_letter_max_delivery_attempts
|
540
|
+
ensure_grpc!
|
541
|
+
@grpc.dead_letter_policy&.max_delivery_attempts
|
542
|
+
end
|
543
|
+
|
544
|
+
##
|
545
|
+
# Sets the maximum number of delivery attempts for any message in the subscription's dead letter policy.
|
546
|
+
# Dead lettering is done on a best effort basis. The same message might be dead lettered multiple times.
|
547
|
+
# The value must be between 5 and 100.
|
548
|
+
#
|
549
|
+
# The number of delivery attempts is defined as 1 + (the sum of number of NACKs and number of times the
|
550
|
+
# acknowledgement deadline has been exceeded for the message). A NACK is any call to ModifyAckDeadline with a 0
|
551
|
+
# deadline. Note that client libraries may automatically extend ack_deadlines.
|
552
|
+
#
|
553
|
+
# This field will be honored on a best effort basis. If this parameter is 0, a default value of 5 is used.
|
554
|
+
#
|
555
|
+
# Makes an API call to retrieve the dead_letter_policy when called on a reference object. See {#reference?}.
|
556
|
+
#
|
557
|
+
# The dead letter topic must be set first. See {#dead_letter_topic=}, {#dead_letter_topic} and
|
558
|
+
# {#remove_dead_letter_policy}.
|
559
|
+
#
|
560
|
+
# @param [Integer, nil] new_dead_letter_max_delivery_attempts A value between 5 and 100. If this parameter is
|
561
|
+
# `nil` or `0`, a default value of 5 is used.
|
562
|
+
#
|
563
|
+
# @raise [ArgumentError] if the dead letter topic has not been set. See {#dead_letter_topic=}.
|
564
|
+
#
|
565
|
+
# @example
|
566
|
+
# require "google/cloud/pubsub"
|
567
|
+
#
|
568
|
+
# pubsub = Google::Cloud::PubSub.new
|
569
|
+
#
|
570
|
+
# sub = pubsub.subscription "my-topic-sub"
|
571
|
+
# sub.dead_letter_topic.name #=> "projects/my-project/topics/my-dead-letter-topic"
|
572
|
+
#
|
573
|
+
# sub.dead_letter_max_delivery_attempts = 20
|
574
|
+
#
|
575
|
+
def dead_letter_max_delivery_attempts= new_dead_letter_max_delivery_attempts
|
576
|
+
ensure_grpc!
|
577
|
+
unless @grpc.dead_letter_policy&.dead_letter_topic
|
578
|
+
# Service error message "3:Invalid resource name given (name=)." does not identify param.
|
579
|
+
raise ArgumentError, "dead_letter_topic is required with dead_letter_max_delivery_attempts"
|
580
|
+
end
|
581
|
+
dead_letter_policy = @grpc.dead_letter_policy || Google::Cloud::PubSub::V1::DeadLetterPolicy.new
|
582
|
+
dead_letter_policy.max_delivery_attempts = new_dead_letter_max_delivery_attempts
|
583
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, dead_letter_policy: dead_letter_policy
|
584
|
+
@grpc = service.update_subscription update_grpc, :dead_letter_policy
|
585
|
+
@resource_name = nil
|
586
|
+
end
|
587
|
+
|
588
|
+
##
|
589
|
+
# Removes an existing dead letter policy. A dead letter policy specifies the conditions for dead lettering
|
590
|
+
# messages in the subscription. If a dead letter policy is not set, dead lettering is disabled.
|
591
|
+
#
|
592
|
+
# Makes an API call to retrieve the dead_letter_policy when called on a reference object. See {#reference?}.
|
593
|
+
#
|
594
|
+
# See {#dead_letter_topic}, {#dead_letter_topic=}, {#dead_letter_max_delivery_attempts} and
|
595
|
+
# {#dead_letter_max_delivery_attempts=}.
|
596
|
+
#
|
597
|
+
# @return [Boolean] `true` if an existing dead letter policy was removed, `false` if no existing dead letter
|
598
|
+
# policy was present.
|
599
|
+
#
|
600
|
+
# @example
|
601
|
+
# require "google/cloud/pubsub"
|
602
|
+
#
|
603
|
+
# pubsub = Google::Cloud::PubSub.new
|
604
|
+
#
|
605
|
+
# sub = pubsub.subscription "my-topic-sub"
|
606
|
+
#
|
607
|
+
# sub.dead_letter_topic.name #=> "projects/my-project/topics/my-dead-letter-topic"
|
608
|
+
# sub.dead_letter_max_delivery_attempts #=> 10
|
609
|
+
#
|
610
|
+
# sub.remove_dead_letter_policy
|
611
|
+
#
|
612
|
+
# sub.dead_letter_topic #=> nil
|
613
|
+
# sub.dead_letter_max_delivery_attempts #=> nil
|
614
|
+
#
|
615
|
+
def remove_dead_letter_policy
|
616
|
+
ensure_grpc!
|
617
|
+
return false if @grpc.dead_letter_policy.nil?
|
618
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, dead_letter_policy: nil
|
619
|
+
@grpc = service.update_subscription update_grpc, :dead_letter_policy
|
620
|
+
true
|
621
|
+
end
|
622
|
+
|
623
|
+
##
|
624
|
+
# A policy that specifies how Cloud Pub/Sub retries message delivery for this subscription. If `nil`, the
|
625
|
+
# default retry policy is applied. This generally implies that messages will be retried as soon as possible
|
626
|
+
# for healthy subscribers. Retry Policy will be triggered on NACKs or acknowledgement deadline exceeded events
|
627
|
+
# for a given message.
|
628
|
+
#
|
629
|
+
# Makes an API call to retrieve the retry_policy when called on a reference object. See {#reference?}.
|
630
|
+
#
|
631
|
+
# @return [RetryPolicy, nil] The retry policy for the subscription, or `nil`.
|
632
|
+
#
|
633
|
+
# @example
|
634
|
+
# require "google/cloud/pubsub"
|
635
|
+
#
|
636
|
+
# pubsub = Google::Cloud::PubSub.new
|
637
|
+
#
|
638
|
+
# sub = pubsub.subscription "my-topic-sub"
|
639
|
+
#
|
640
|
+
# sub.retry_policy = Google::Cloud::PubSub::RetryPolicy.new minimum_backoff: 5, maximum_backoff: 300
|
641
|
+
#
|
642
|
+
# sub.retry_policy.minimum_backoff #=> 5
|
643
|
+
# sub.retry_policy.maximum_backoff #=> 300
|
644
|
+
#
|
645
|
+
def retry_policy
|
646
|
+
ensure_grpc!
|
647
|
+
return nil unless @grpc.retry_policy
|
648
|
+
RetryPolicy.from_grpc @grpc.retry_policy
|
649
|
+
end
|
650
|
+
|
651
|
+
##
|
652
|
+
# Sets a policy that specifies how Cloud Pub/Sub retries message delivery for this subscription. If `nil`, the
|
653
|
+
# default retry policy is applied. This generally implies that messages will be retried as soon as possible
|
654
|
+
# for healthy subscribers. Retry Policy will be triggered on NACKs or acknowledgement deadline exceeded events
|
655
|
+
# for a given message.
|
656
|
+
#
|
657
|
+
# @param [RetryPolicy, nil] new_retry_policy A new retry policy for the subscription, or `nil`.
|
658
|
+
#
|
659
|
+
# @example
|
660
|
+
# require "google/cloud/pubsub"
|
661
|
+
#
|
662
|
+
# pubsub = Google::Cloud::PubSub.new
|
663
|
+
#
|
664
|
+
# sub = pubsub.subscription "my-topic-sub"
|
665
|
+
#
|
666
|
+
# sub.retry_policy = Google::Cloud::PubSub::RetryPolicy.new minimum_backoff: 5, maximum_backoff: 300
|
667
|
+
#
|
668
|
+
# sub.retry_policy.minimum_backoff #=> 5
|
669
|
+
# sub.retry_policy.maximum_backoff #=> 300
|
670
|
+
#
|
671
|
+
def retry_policy= new_retry_policy
|
672
|
+
ensure_service!
|
673
|
+
new_retry_policy = new_retry_policy.to_grpc if new_retry_policy
|
674
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, retry_policy: new_retry_policy
|
675
|
+
@grpc = service.update_subscription update_grpc, :retry_policy
|
676
|
+
@resource_name = nil
|
677
|
+
end
|
678
|
+
|
679
|
+
##
|
680
|
+
# Whether message ordering has been enabled. When enabled, messages
|
681
|
+
# published with the same `ordering_key` will be delivered in the order
|
682
|
+
# they were published. When disabled, messages may be delivered in any
|
683
|
+
# order.
|
684
|
+
#
|
685
|
+
# @note At the time of this release, ordering keys are not yet publicly
|
686
|
+
# enabled and requires special project enablements.
|
687
|
+
#
|
688
|
+
# See {Topic#publish_async}, {#listen}, and {Message#ordering_key}.
|
689
|
+
#
|
690
|
+
# Makes an API call to retrieve the enable_message_ordering value when called on a
|
691
|
+
# reference object. See {#reference?}.
|
692
|
+
#
|
693
|
+
# @return [Boolean]
|
694
|
+
#
|
695
|
+
def message_ordering?
|
696
|
+
ensure_grpc!
|
697
|
+
@grpc.enable_message_ordering
|
698
|
+
end
|
699
|
+
|
700
|
+
##
|
701
|
+
# Whether the subscription is detached from its topic. Detached subscriptions don't receive messages from their
|
702
|
+
# topic and don't retain any backlog. {#pull} and {#listen} (pull and streaming pull) operations will raise
|
703
|
+
# `FAILED_PRECONDITION`. If the subscription is a push subscription (see {#push_config}), pushes to the endpoint
|
704
|
+
# will not be made. The default value is `false`.
|
705
|
+
#
|
706
|
+
# See {Topic#subscribe} and {#detach}.
|
707
|
+
#
|
708
|
+
# Makes an API call to retrieve the detached value when called on a
|
709
|
+
# reference object. See {#reference?}.
|
710
|
+
#
|
711
|
+
# @return [Boolean]
|
712
|
+
#
|
713
|
+
# @example
|
714
|
+
# require "google/cloud/pubsub"
|
715
|
+
#
|
716
|
+
# pubsub = Google::Cloud::PubSub.new
|
717
|
+
#
|
718
|
+
# sub = pubsub.subscription "my-topic-sub"
|
719
|
+
# sub.detach
|
720
|
+
#
|
721
|
+
# # sleep 120
|
722
|
+
# sub.detached? #=> true
|
723
|
+
#
|
724
|
+
def detached?
|
725
|
+
ensure_grpc!
|
726
|
+
@grpc.detached
|
727
|
+
end
|
728
|
+
|
363
729
|
##
|
364
730
|
# Determines whether the subscription exists in the Pub/Sub service.
|
365
731
|
#
|
@@ -408,19 +774,54 @@ module Google
|
|
408
774
|
end
|
409
775
|
|
410
776
|
##
|
411
|
-
#
|
412
|
-
# messages
|
413
|
-
#
|
414
|
-
#
|
777
|
+
# Detaches a subscription from its topic. All messages retained in the subscription are dropped. Detached
|
778
|
+
# subscriptions don't receive messages from their topic and don't retain any backlog. Subsequent {#pull} and
|
779
|
+
# {#listen} (pull and streaming pull) operations will raise `FAILED_PRECONDITION`. If the subscription is a push
|
780
|
+
# subscription (see {#push_config}), pushes to the endpoint will stop. It may take a few minutes for the
|
781
|
+
# subscription's detached state to be reflected in subsequent calls to {#detached?}.
|
782
|
+
#
|
783
|
+
# @return [Boolean] Returns `true` if the detach operation was successful.
|
784
|
+
#
|
785
|
+
# @example
|
786
|
+
# require "google/cloud/pubsub"
|
787
|
+
#
|
788
|
+
# pubsub = Google::Cloud::PubSub.new
|
789
|
+
#
|
790
|
+
# sub = pubsub.subscription "my-topic-sub"
|
791
|
+
# sub.detach
|
792
|
+
#
|
793
|
+
# # sleep 120
|
794
|
+
# sub.detached? #=> true
|
795
|
+
#
|
796
|
+
def detach
|
797
|
+
ensure_service!
|
798
|
+
service.detach_subscription name
|
799
|
+
true
|
800
|
+
end
|
801
|
+
|
802
|
+
##
|
803
|
+
# Pulls messages from the server, blocking until messages are available
|
804
|
+
# when called with the `immediate: false` option, which is recommended
|
805
|
+
# to avoid adverse impacts on the performance of pull operations.
|
806
|
+
#
|
807
|
+
# Raises an API error with status `UNAVAILABLE` if there are too many
|
808
|
+
# concurrent pull requests pending for the given subscription.
|
415
809
|
#
|
416
810
|
# See also {#listen} for the preferred way to process messages as they
|
417
811
|
# become available.
|
418
812
|
#
|
419
|
-
# @param [Boolean] immediate
|
420
|
-
#
|
421
|
-
#
|
422
|
-
#
|
423
|
-
# is
|
813
|
+
# @param [Boolean] immediate Whether to return immediately or block until
|
814
|
+
# messages are available.
|
815
|
+
#
|
816
|
+
# **Warning:** The default value of this field is `true`. However, sending
|
817
|
+
# `true` is discouraged because it adversely impacts the performance of
|
818
|
+
# pull operations. We recommend that users always explicitly set this field
|
819
|
+
# to `false`.
|
820
|
+
#
|
821
|
+
# If this field set to `true`, the system will respond immediately
|
822
|
+
# even if it there are no messages available to return in the pull
|
823
|
+
# response. Otherwise, the system may wait (for a bounded amount of time)
|
824
|
+
# until at least one message is available, rather than returning no messages.
|
424
825
|
#
|
425
826
|
# See also {#listen} for the preferred way to process messages as they
|
426
827
|
# become available.
|
@@ -430,31 +831,24 @@ module Google
|
|
430
831
|
#
|
431
832
|
# @return [Array<Google::Cloud::PubSub::ReceivedMessage>]
|
432
833
|
#
|
433
|
-
# @example
|
834
|
+
# @example The `immediate: false` option is now recommended to avoid adverse impacts on pull operations:
|
434
835
|
# require "google/cloud/pubsub"
|
435
836
|
#
|
436
837
|
# pubsub = Google::Cloud::PubSub.new
|
437
838
|
#
|
438
839
|
# sub = pubsub.subscription "my-topic-sub"
|
439
|
-
# sub.pull
|
440
|
-
#
|
441
|
-
# @example A maximum number of messages returned can also be specified:
|
442
|
-
# require "google/cloud/pubsub"
|
443
|
-
#
|
444
|
-
# pubsub = Google::Cloud::PubSub.new
|
445
|
-
#
|
446
|
-
# sub = pubsub.subscription "my-topic-sub"
|
447
|
-
# sub.pull(max: 10).each do |received_message|
|
840
|
+
# received_messages = sub.pull immediate: false
|
841
|
+
# received_messages.each do |received_message|
|
448
842
|
# received_message.acknowledge!
|
449
843
|
# end
|
450
844
|
#
|
451
|
-
# @example
|
845
|
+
# @example A maximum number of messages returned can also be specified:
|
452
846
|
# require "google/cloud/pubsub"
|
453
847
|
#
|
454
848
|
# pubsub = Google::Cloud::PubSub.new
|
455
849
|
#
|
456
850
|
# sub = pubsub.subscription "my-topic-sub"
|
457
|
-
# received_messages = sub.pull immediate: false
|
851
|
+
# received_messages = sub.pull immediate: false, max: 10
|
458
852
|
# received_messages.each do |received_message|
|
459
853
|
# received_message.acknowledge!
|
460
854
|
# end
|
@@ -508,17 +902,60 @@ module Google
|
|
508
902
|
# message will be removed from the subscriber and made available for
|
509
903
|
# redelivery after the callback is completed.
|
510
904
|
#
|
905
|
+
# Google Cloud Pub/Sub ordering keys provide the ability to ensure
|
906
|
+
# related messages are sent to subscribers in the order in which they
|
907
|
+
# were published. Messages can be tagged with an ordering key, a string
|
908
|
+
# that identifies related messages for which publish order should be
|
909
|
+
# respected. The service guarantees that, for a given ordering key and
|
910
|
+
# publisher, messages are sent to subscribers in the order in which they
|
911
|
+
# were published. Ordering does not require sacrificing high throughput
|
912
|
+
# or scalability, as the service automatically distributes messages for
|
913
|
+
# different ordering keys across subscribers.
|
914
|
+
#
|
915
|
+
# To use ordering keys, the subscription must be created with message
|
916
|
+
# ordering enabled (See {Topic#subscribe} and {#message_ordering?})
|
917
|
+
# before calling {#listen}. When enabled, the subscriber will deliver
|
918
|
+
# messages with the same `ordering_key` in the order they were
|
919
|
+
# published.
|
920
|
+
#
|
921
|
+
# @note At the time of this release, ordering keys are not yet publicly
|
922
|
+
# enabled and requires special project enablements.
|
923
|
+
#
|
511
924
|
# @param [Numeric] deadline The default number of seconds the stream
|
512
925
|
# will hold received messages before modifying the message's ack
|
513
926
|
# deadline. The minimum is 10, the maximum is 600. Default is
|
514
927
|
# {#deadline}. Optional.
|
515
928
|
#
|
516
|
-
#
|
517
|
-
#
|
929
|
+
# When using a reference object an API call will be made to retrieve
|
930
|
+
# the default deadline value for the subscription when this argument
|
931
|
+
# is not provided. See {#reference?}.
|
932
|
+
# @param [Boolean] message_ordering Whether message ordering has been
|
933
|
+
# enabled. The value provided must match the value set on the Pub/Sub
|
934
|
+
# service. See {#message_ordering?}. Optional.
|
935
|
+
#
|
936
|
+
# When using a reference object an API call will be made to retrieve
|
937
|
+
# the default message_ordering value for the subscription when this
|
938
|
+
# argument is not provided. See {#reference?}.
|
518
939
|
# @param [Integer] streams The number of concurrent streams to open to
|
519
|
-
# pull messages from the subscription. Default is
|
520
|
-
# @param [Integer] inventory The
|
521
|
-
#
|
940
|
+
# pull messages from the subscription. Default is 2. Optional.
|
941
|
+
# @param [Hash, Integer] inventory The settings to control how received messages are to be handled by the
|
942
|
+
# subscriber. When provided as an Integer instead of a Hash only `max_outstanding_messages` will be set.
|
943
|
+
# Optional.
|
944
|
+
#
|
945
|
+
# Hash keys and values may include the following:
|
946
|
+
#
|
947
|
+
# * `:max_outstanding_messages` [Integer] The number of received messages to be collected by subscriber.
|
948
|
+
# Default is 1,000. (Note: replaces `:limit`, which is deprecated.)
|
949
|
+
# * `:max_outstanding_bytes` [Integer] The total byte size of received messages to be collected by
|
950
|
+
# subscriber. Default is 100,000,000 (100MB). (Note: replaces `:bytesize`, which is deprecated.)
|
951
|
+
# * `:use_legacy_flow_control` [Boolean] Disables enforcing flow control settings at the Cloud PubSub
|
952
|
+
# server and the less accurate method of only enforcing flow control at the client side is used instead.
|
953
|
+
# Default is false.
|
954
|
+
# * `:max_total_lease_duration` [Integer] The number of seconds that received messages can be held awaiting
|
955
|
+
# processing. Default is 3,600 (1 hour). (Note: replaces `:extension`, which is deprecated.)
|
956
|
+
# * `:max_duration_per_lease_extension` [Integer] The maximum amount of time in seconds for a single lease
|
957
|
+
# extension attempt. Bounds the delay before a message redelivery if the subscriber fails to extend the
|
958
|
+
# deadline. Default is 0 (disabled).
|
522
959
|
# @param [Hash] threads The number of threads to create to handle
|
523
960
|
# concurrent calls by each stream opened by the subscriber. Optional.
|
524
961
|
#
|
@@ -546,6 +983,7 @@ module Google
|
|
546
983
|
#
|
547
984
|
# subscriber = sub.listen do |received_message|
|
548
985
|
# # process message
|
986
|
+
# puts "Data: #{received_message.message.data}, published at #{received_message.message.published_at}"
|
549
987
|
# received_message.acknowledge!
|
550
988
|
# end
|
551
989
|
#
|
@@ -553,7 +991,7 @@ module Google
|
|
553
991
|
# subscriber.start
|
554
992
|
#
|
555
993
|
# # Shut down the subscriber when ready to stop receiving messages.
|
556
|
-
# subscriber.stop
|
994
|
+
# subscriber.stop!
|
557
995
|
#
|
558
996
|
# @example Configuring to increase concurrent callbacks:
|
559
997
|
# require "google/cloud/pubsub"
|
@@ -571,14 +1009,55 @@ module Google
|
|
571
1009
|
# # Start background threads that will call block passed to listen.
|
572
1010
|
# subscriber.start
|
573
1011
|
#
|
574
|
-
|
575
|
-
|
1012
|
+
# # Shut down the subscriber when ready to stop receiving messages.
|
1013
|
+
# subscriber.stop!
|
1014
|
+
#
|
1015
|
+
# @example Ordered messages are supported using ordering_key:
|
1016
|
+
# require "google/cloud/pubsub"
|
1017
|
+
#
|
1018
|
+
# pubsub = Google::Cloud::PubSub.new
|
1019
|
+
#
|
1020
|
+
# sub = pubsub.subscription "my-ordered-topic-sub"
|
1021
|
+
# sub.message_ordering? #=> true
|
1022
|
+
#
|
1023
|
+
# subscriber = sub.listen do |received_message|
|
1024
|
+
# # messsages with the same ordering_key are received
|
1025
|
+
# # in the order in which they were published.
|
1026
|
+
# received_message.acknowledge!
|
1027
|
+
# end
|
1028
|
+
#
|
1029
|
+
# # Start background threads that will call block passed to listen.
|
1030
|
+
# subscriber.start
|
1031
|
+
#
|
1032
|
+
# # Shut down the subscriber when ready to stop receiving messages.
|
1033
|
+
# subscriber.stop!
|
1034
|
+
#
|
1035
|
+
# @example Set the maximum amount of time before redelivery if the subscriber fails to extend the deadline:
|
1036
|
+
# require "google/cloud/pubsub"
|
1037
|
+
#
|
1038
|
+
# pubsub = Google::Cloud::PubSub.new
|
1039
|
+
#
|
1040
|
+
# sub = pubsub.subscription "my-topic-sub"
|
1041
|
+
#
|
1042
|
+
# subscriber = sub.listen inventory: { max_duration_per_lease_extension: 20 } do |received_message|
|
1043
|
+
# # Process message very slowly with possibility of failure.
|
1044
|
+
# process rec_message.data # takes minutes
|
1045
|
+
# rec_message.acknowledge!
|
1046
|
+
# end
|
1047
|
+
#
|
1048
|
+
# # Start background threads that will call block passed to listen.
|
1049
|
+
# subscriber.start
|
1050
|
+
#
|
1051
|
+
# # Shut down the subscriber when ready to stop receiving messages.
|
1052
|
+
# subscriber.stop!
|
1053
|
+
#
|
1054
|
+
def listen deadline: nil, message_ordering: nil, streams: nil, inventory: nil, threads: {}, &block
|
576
1055
|
ensure_service!
|
577
1056
|
deadline ||= self.deadline
|
1057
|
+
message_ordering = message_ordering? if message_ordering.nil?
|
578
1058
|
|
579
|
-
Subscriber.new name, block, deadline: deadline, streams: streams,
|
580
|
-
|
581
|
-
service: service
|
1059
|
+
Subscriber.new name, block, deadline: deadline, streams: streams, inventory: inventory,
|
1060
|
+
message_ordering: message_ordering, threads: threads, service: service
|
582
1061
|
end
|
583
1062
|
|
584
1063
|
##
|
@@ -600,7 +1079,7 @@ module Google
|
|
600
1079
|
# pubsub = Google::Cloud::PubSub.new
|
601
1080
|
#
|
602
1081
|
# sub = pubsub.subscription "my-topic-sub"
|
603
|
-
# received_messages = sub.pull
|
1082
|
+
# received_messages = sub.pull immediate: false
|
604
1083
|
# sub.acknowledge received_messages
|
605
1084
|
#
|
606
1085
|
def acknowledge *messages
|
@@ -635,7 +1114,7 @@ module Google
|
|
635
1114
|
# pubsub = Google::Cloud::PubSub.new
|
636
1115
|
#
|
637
1116
|
# sub = pubsub.subscription "my-topic-sub"
|
638
|
-
# received_messages = sub.pull
|
1117
|
+
# received_messages = sub.pull immediate: false
|
639
1118
|
# sub.modify_ack_deadline 120, received_messages
|
640
1119
|
#
|
641
1120
|
def modify_ack_deadline new_deadline, *messages
|
@@ -656,14 +1135,19 @@ module Google
|
|
656
1135
|
# * Any messages published to the subscription's topic following the
|
657
1136
|
# successful completion of the `create_snapshot` operation.
|
658
1137
|
#
|
659
|
-
# @param [String, nil] snapshot_name Name of the new snapshot.
|
660
|
-
# name is not provided, the server will assign a random name
|
661
|
-
# for this snapshot on the same project as the subscription.
|
662
|
-
#
|
663
|
-
#
|
664
|
-
#
|
665
|
-
#
|
666
|
-
#
|
1138
|
+
# @param [String, nil] snapshot_name Name of the new snapshot. Optional.
|
1139
|
+
# If the name is not provided, the server will assign a random name
|
1140
|
+
# for this snapshot on the same project as the subscription.
|
1141
|
+
# The value can be a simple snapshot ID (relative name), in which
|
1142
|
+
# case the current project ID will be supplied, or a fully-qualified
|
1143
|
+
# snapshot name in the form
|
1144
|
+
# `projects/{project_id}/snapshots/{snapshot_id}`.
|
1145
|
+
#
|
1146
|
+
# The snapshot ID (relative name) must start with a letter, and
|
1147
|
+
# contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
|
1148
|
+
# underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
|
1149
|
+
# signs (`%`). It must be between 3 and 255 characters in length, and
|
1150
|
+
# it must not start with `goog`.
|
667
1151
|
# @param [Hash] labels A hash of user-provided labels associated with
|
668
1152
|
# the snapshot. You can use these to organize and group your
|
669
1153
|
# snapshots. Label keys and values can be no longer than 63
|
@@ -728,7 +1212,7 @@ module Google
|
|
728
1212
|
#
|
729
1213
|
# snapshot = sub.create_snapshot
|
730
1214
|
#
|
731
|
-
# received_messages = sub.pull
|
1215
|
+
# received_messages = sub.pull immediate: false
|
732
1216
|
# sub.acknowledge received_messages
|
733
1217
|
#
|
734
1218
|
# sub.seek snapshot
|
@@ -741,7 +1225,7 @@ module Google
|
|
741
1225
|
#
|
742
1226
|
# time = Time.now
|
743
1227
|
#
|
744
|
-
# received_messages = sub.pull
|
1228
|
+
# received_messages = sub.pull immediate: false
|
745
1229
|
# sub.acknowledge received_messages
|
746
1230
|
#
|
747
1231
|
# sub.seek time
|