google-cloud-pubsub 1.4.0 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +43 -0
- data/EMULATOR.md +1 -1
- data/TROUBLESHOOTING.md +2 -8
- data/lib/google/cloud/pubsub/received_message.rb +0 -5
- data/lib/google/cloud/pubsub/retry_policy.rb +90 -0
- data/lib/google/cloud/pubsub/service.rb +9 -0
- data/lib/google/cloud/pubsub/subscriber.rb +29 -3
- data/lib/google/cloud/pubsub/subscriber/inventory.rb +6 -3
- data/lib/google/cloud/pubsub/subscriber/stream.rb +1 -0
- data/lib/google/cloud/pubsub/subscription.rb +84 -2
- data/lib/google/cloud/pubsub/subscription/push_config.rb +2 -2
- data/lib/google/cloud/pubsub/topic.rb +21 -1
- data/lib/google/cloud/pubsub/v1/doc/google/pubsub/v1/pubsub.rb +65 -15
- data/lib/google/cloud/pubsub/v1/publisher_client.rb +151 -14
- data/lib/google/cloud/pubsub/v1/publisher_client_config.json +15 -0
- data/lib/google/cloud/pubsub/v1/subscriber_client.rb +84 -13
- data/lib/google/cloud/pubsub/v1/subscriber_client_config.json +9 -0
- data/lib/google/cloud/pubsub/version.rb +1 -1
- data/lib/google/pubsub/v1/pubsub_pb.rb +14 -0
- data/lib/google/pubsub/v1/pubsub_services_pb.rb +6 -1
- metadata +5 -4
@@ -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
|
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
|
-
#
|
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
|
@@ -297,6 +298,13 @@ module Google
|
|
297
298
|
# the subscription's dead letter policy. Dead lettering is done on a best effort basis. The same message might
|
298
299
|
# be dead lettered multiple times. The value must be between 5 and 100. If this parameter is 0, a default
|
299
300
|
# value of 5 is used. The `dead_letter_topic` must also be set.
|
301
|
+
# @param [RetryPolicy] retry_policy A policy that specifies how Cloud Pub/Sub retries message delivery for
|
302
|
+
# this subscription. If not set, the default retry policy is applied. This generally implies that messages
|
303
|
+
# will be retried as soon as possible for healthy subscribers. Retry Policy will be triggered on NACKs or
|
304
|
+
# acknowledgement deadline exceeded events for a given message.
|
305
|
+
#
|
306
|
+
# **EXPERIMENTAL:** This API might be changed in backward-incompatible ways and is not recommended for
|
307
|
+
# production use. It is not subject to any SLA or deprecation policy.
|
300
308
|
#
|
301
309
|
# @return [Google::Cloud::PubSub::Subscription]
|
302
310
|
#
|
@@ -340,8 +348,19 @@ module Google
|
|
340
348
|
# dead_letter_topic: dead_letter_topic,
|
341
349
|
# dead_letter_max_delivery_attempts: 10
|
342
350
|
#
|
351
|
+
# @example Configure a Retry Policy:
|
352
|
+
# require "google/cloud/pubsub"
|
353
|
+
#
|
354
|
+
# pubsub = Google::Cloud::PubSub.new
|
355
|
+
#
|
356
|
+
# topic = pubsub.topic "my-topic"
|
357
|
+
#
|
358
|
+
# retry_policy = Google::Cloud::PubSub::RetryPolicy.new minimum_backoff: 5, maximum_backoff: 300
|
359
|
+
# sub = topic.subscribe "my-topic-sub", retry_policy: retry_policy
|
360
|
+
#
|
343
361
|
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
|
362
|
+
message_ordering: nil, dead_letter_topic: nil, dead_letter_max_delivery_attempts: nil,
|
363
|
+
retry_policy: nil
|
345
364
|
ensure_service!
|
346
365
|
options = { deadline: deadline, retain_acked: retain_acked, retention: retention, endpoint: endpoint,
|
347
366
|
labels: labels, message_ordering: message_ordering,
|
@@ -351,6 +370,7 @@ module Google
|
|
351
370
|
# Service error message "3:Invalid resource name given (name=)." does not identify param.
|
352
371
|
raise ArgumentError, "dead_letter_topic is required with dead_letter_max_delivery_attempts"
|
353
372
|
end
|
373
|
+
options[:retry_policy] = retry_policy.to_grpc if retry_policy
|
354
374
|
grpc = service.create_subscription name, subscription_name, options
|
355
375
|
Subscription.from_grpc grpc, service
|
356
376
|
end
|
@@ -107,9 +107,9 @@ module Google
|
|
107
107
|
# @return [Google::Protobuf::FieldMask]
|
108
108
|
# Required. Indicates which fields in the provided topic to update. Must be
|
109
109
|
# specified and non-empty. Note that if `update_mask` contains
|
110
|
-
# "message_storage_policy"
|
111
|
-
#
|
112
|
-
#
|
110
|
+
# "message_storage_policy" but the `message_storage_policy` is not set in
|
111
|
+
# the `topic` provided above, then the updated value is determined by the
|
112
|
+
# policy configured at the project or organization level.
|
113
113
|
class UpdateTopicRequest; end
|
114
114
|
|
115
115
|
# Request for the Publish method.
|
@@ -173,7 +173,7 @@ module Google
|
|
173
173
|
# Response for the `ListTopicSubscriptions` method.
|
174
174
|
# @!attribute [rw] subscriptions
|
175
175
|
# @return [Array<String>]
|
176
|
-
# The names of the
|
176
|
+
# The names of subscriptions attached to the topic specified in the request.
|
177
177
|
# @!attribute [rw] next_page_token
|
178
178
|
# @return [String]
|
179
179
|
# If not empty, indicates that there may be more subscriptions that match
|
@@ -214,6 +214,17 @@ module Google
|
|
214
214
|
# Format is `projects/{project}/topics/{topic}`.
|
215
215
|
class DeleteTopicRequest; end
|
216
216
|
|
217
|
+
# Request for the DetachSubscription method.
|
218
|
+
# @!attribute [rw] subscription
|
219
|
+
# @return [String]
|
220
|
+
# Required. The subscription to detach.
|
221
|
+
# Format is `projects/{project}/subscriptions/{subscription}`.
|
222
|
+
class DetachSubscriptionRequest; end
|
223
|
+
|
224
|
+
# Response for the DetachSubscription method.
|
225
|
+
# Reserved for future use.
|
226
|
+
class DetachSubscriptionResponse; end
|
227
|
+
|
217
228
|
# A subscription resource.
|
218
229
|
# @!attribute [rw] name
|
219
230
|
# @return [String]
|
@@ -293,6 +304,15 @@ module Google
|
|
293
304
|
# operations on the subscription. If `expiration_policy` is not set, a
|
294
305
|
# *default policy* with `ttl` of 31 days will be used. The minimum allowed
|
295
306
|
# value for `expiration_policy.ttl` is 1 day.
|
307
|
+
# @!attribute [rw] filter
|
308
|
+
# @return [String]
|
309
|
+
# An expression written in the Cloud Pub/Sub filter language. If non-empty,
|
310
|
+
# then only `PubsubMessage`s whose `attributes` field matches the filter are
|
311
|
+
# delivered on this subscription. If empty, then no messages are filtered
|
312
|
+
# out.
|
313
|
+
# <b>EXPERIMENTAL:</b> This feature is part of a closed alpha release. This
|
314
|
+
# API might be changed in backward-incompatible ways and is not recommended
|
315
|
+
# for production use. It is not subject to any SLA or deprecation policy.
|
296
316
|
# @!attribute [rw] dead_letter_policy
|
297
317
|
# @return [Google::Cloud::PubSub::V1::DeadLetterPolicy]
|
298
318
|
# A policy that specifies the conditions for dead lettering messages in
|
@@ -303,11 +323,41 @@ module Google
|
|
303
323
|
# parent project (i.e.,
|
304
324
|
# service-\\{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have
|
305
325
|
# permission to Acknowledge() messages on this subscription.
|
306
|
-
#
|
307
|
-
#
|
308
|
-
#
|
326
|
+
# @!attribute [rw] retry_policy
|
327
|
+
# @return [Google::Cloud::PubSub::V1::RetryPolicy]
|
328
|
+
# A policy that specifies how Cloud Pub/Sub retries message delivery for this
|
329
|
+
# subscription.
|
330
|
+
#
|
331
|
+
# If not set, the default retry policy is applied. This generally implies
|
332
|
+
# that messages will be retried as soon as possible for healthy subscribers.
|
333
|
+
# RetryPolicy will be triggered on NACKs or acknowledgement deadline
|
334
|
+
# exceeded events for a given message.
|
335
|
+
# <b>EXPERIMENTAL:</b> This API might be changed in backward-incompatible
|
336
|
+
# ways and is not recommended for production use. It is not subject to any
|
337
|
+
# SLA or deprecation policy.
|
309
338
|
class Subscription; end
|
310
339
|
|
340
|
+
# A policy that specifies how Cloud Pub/Sub retries message delivery.
|
341
|
+
#
|
342
|
+
# Retry delay will be exponential based on provided minimum and maximum
|
343
|
+
# backoffs. https://en.wikipedia.org/wiki/Exponential_backoff.
|
344
|
+
#
|
345
|
+
# RetryPolicy will be triggered on NACKs or acknowledgement deadline exceeded
|
346
|
+
# events for a given message.
|
347
|
+
#
|
348
|
+
# Retry Policy is implemented on a best effort basis. At times, the delay
|
349
|
+
# between consecutive deliveries may not match the configuration. That is,
|
350
|
+
# delay can be more or less than configured backoff.
|
351
|
+
# @!attribute [rw] minimum_backoff
|
352
|
+
# @return [Google::Protobuf::Duration]
|
353
|
+
# The minimum delay between consecutive deliveries of a given message.
|
354
|
+
# Value should be between 0 and 600 seconds. Defaults to 10 seconds.
|
355
|
+
# @!attribute [rw] maximum_backoff
|
356
|
+
# @return [Google::Protobuf::Duration]
|
357
|
+
# The maximum delay between consecutive deliveries of a given message.
|
358
|
+
# Value should be between 0 and 600 seconds. Defaults to 600 seconds.
|
359
|
+
class RetryPolicy; end
|
360
|
+
|
311
361
|
# Dead lettering is done on a best effort basis. The same message might be
|
312
362
|
# dead lettered multiple times.
|
313
363
|
#
|
@@ -357,7 +407,7 @@ module Google
|
|
357
407
|
# @!attribute [rw] push_endpoint
|
358
408
|
# @return [String]
|
359
409
|
# A URL locating the endpoint to which messages should be pushed.
|
360
|
-
# For example, a Webhook endpoint might use
|
410
|
+
# For example, a Webhook endpoint might use `https://example.com/push`.
|
361
411
|
# @!attribute [rw] attributes
|
362
412
|
# @return [Hash{String => String}]
|
363
413
|
# Endpoint configuration attributes that can be used to control different
|
@@ -416,8 +466,11 @@ module Google
|
|
416
466
|
# The message.
|
417
467
|
# @!attribute [rw] delivery_attempt
|
418
468
|
# @return [Integer]
|
419
|
-
#
|
420
|
-
#
|
469
|
+
# The approximate number of times that Cloud Pub/Sub has attempted to deliver
|
470
|
+
# the associated message to a subscriber.
|
471
|
+
#
|
472
|
+
# More precisely, this is 1 + (number of NACKs) +
|
473
|
+
# (number of ack_deadline exceeds) for this message.
|
421
474
|
#
|
422
475
|
# A NACK is any call to ModifyAckDeadline with a 0 deadline. An ack_deadline
|
423
476
|
# exceeds event is whenever a message is not acknowledged within
|
@@ -425,13 +478,10 @@ module Google
|
|
425
478
|
# Subscription.ackDeadlineSeconds, but may get extended automatically by
|
426
479
|
# the client library.
|
427
480
|
#
|
428
|
-
#
|
429
|
-
# is calculated at best effort and is approximate.
|
481
|
+
# Upon the first delivery of a given message, `delivery_attempt` will have a
|
482
|
+
# value of 1. The value is calculated at best effort and is approximate.
|
430
483
|
#
|
431
484
|
# If a DeadLetterPolicy is not set on the subscription, this will be 0.
|
432
|
-
# <b>EXPERIMENTAL:</b> This feature is part of a closed alpha release. This
|
433
|
-
# API might be changed in backward-incompatible ways and is not recommended
|
434
|
-
# for production use. It is not subject to any SLA or deprecation policy.
|
435
485
|
class ReceivedMessage; end
|
436
486
|
|
437
487
|
# Request for the GetSubscription method.
|
@@ -64,7 +64,11 @@ module Google
|
|
64
64
|
"list_topic_subscriptions" => Google::Gax::PageDescriptor.new(
|
65
65
|
"page_token",
|
66
66
|
"next_page_token",
|
67
|
-
"subscriptions")
|
67
|
+
"subscriptions"),
|
68
|
+
"list_topic_snapshots" => Google::Gax::PageDescriptor.new(
|
69
|
+
"page_token",
|
70
|
+
"next_page_token",
|
71
|
+
"snapshots")
|
68
72
|
}.freeze
|
69
73
|
|
70
74
|
private_constant :PAGE_DESCRIPTORS
|
@@ -94,6 +98,12 @@ module Google
|
|
94
98
|
|
95
99
|
private_constant :PROJECT_PATH_TEMPLATE
|
96
100
|
|
101
|
+
SUBSCRIPTION_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
|
102
|
+
"projects/{project}/subscriptions/{subscription}"
|
103
|
+
)
|
104
|
+
|
105
|
+
private_constant :SUBSCRIPTION_PATH_TEMPLATE
|
106
|
+
|
97
107
|
TOPIC_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
|
98
108
|
"projects/{project}/topics/{topic}"
|
99
109
|
)
|
@@ -109,6 +119,17 @@ module Google
|
|
109
119
|
)
|
110
120
|
end
|
111
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
|
+
|
112
133
|
# Returns a fully-qualified topic resource name string.
|
113
134
|
# @param project [String]
|
114
135
|
# @param topic [String]
|
@@ -292,6 +313,14 @@ module Google
|
|
292
313
|
{'topic' => request.topic}
|
293
314
|
end
|
294
315
|
)
|
316
|
+
@list_topic_snapshots = Google::Gax.create_api_call(
|
317
|
+
@publisher_stub.method(:list_topic_snapshots),
|
318
|
+
defaults["list_topic_snapshots"],
|
319
|
+
exception_transformer: exception_transformer,
|
320
|
+
params_extractor: proc do |request|
|
321
|
+
{'topic' => request.topic}
|
322
|
+
end
|
323
|
+
)
|
295
324
|
@delete_topic = Google::Gax.create_api_call(
|
296
325
|
@publisher_stub.method(:delete_topic),
|
297
326
|
defaults["delete_topic"],
|
@@ -324,6 +353,14 @@ module Google
|
|
324
353
|
{'resource' => request.resource}
|
325
354
|
end
|
326
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
|
+
)
|
327
364
|
end
|
328
365
|
|
329
366
|
# Service calls
|
@@ -395,9 +432,9 @@ module Google
|
|
395
432
|
# @param update_mask [Google::Protobuf::FieldMask | Hash]
|
396
433
|
# Required. Indicates which fields in the provided topic to update. Must be
|
397
434
|
# specified and non-empty. Note that if `update_mask` contains
|
398
|
-
# "message_storage_policy"
|
399
|
-
#
|
400
|
-
#
|
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.
|
401
438
|
# A hash of the same form as `Google::Protobuf::FieldMask`
|
402
439
|
# can also be provided.
|
403
440
|
# @param options [Google::Gax::CallOptions]
|
@@ -560,7 +597,7 @@ module Google
|
|
560
597
|
@list_topics.call(req, options, &block)
|
561
598
|
end
|
562
599
|
|
563
|
-
# Lists the names of the subscriptions on this topic.
|
600
|
+
# Lists the names of the attached subscriptions on this topic.
|
564
601
|
#
|
565
602
|
# @param topic [String]
|
566
603
|
# Required. The name of the topic that subscriptions are attached to.
|
@@ -615,6 +652,66 @@ module Google
|
|
615
652
|
@list_topic_subscriptions.call(req, options, &block)
|
616
653
|
end
|
617
654
|
|
655
|
+
# Lists the names of the snapshots on this topic. Snapshots are used in
|
656
|
+
# <a href="https://cloud.google.com/pubsub/docs/replay-overview">Seek</a>
|
657
|
+
# operations, which allow
|
658
|
+
# you to manage message acknowledgments in bulk. That is, you can set the
|
659
|
+
# acknowledgment state of messages in an existing subscription to the state
|
660
|
+
# captured by a snapshot.
|
661
|
+
#
|
662
|
+
# @param topic [String]
|
663
|
+
# Required. The name of the topic that snapshots are attached to.
|
664
|
+
# Format is `projects/{project}/topics/{topic}`.
|
665
|
+
# @param page_size [Integer]
|
666
|
+
# The maximum number of resources contained in the underlying API
|
667
|
+
# response. If page streaming is performed per-resource, this
|
668
|
+
# parameter does not affect the return value. If page streaming is
|
669
|
+
# performed per-page, this determines the maximum number of
|
670
|
+
# resources in a page.
|
671
|
+
# @param options [Google::Gax::CallOptions]
|
672
|
+
# Overrides the default settings for this call, e.g, timeout,
|
673
|
+
# retries, etc.
|
674
|
+
# @yield [result, operation] Access the result along with the RPC operation
|
675
|
+
# @yieldparam result [Google::Gax::PagedEnumerable<String>]
|
676
|
+
# @yieldparam operation [GRPC::ActiveCall::Operation]
|
677
|
+
# @return [Google::Gax::PagedEnumerable<String>]
|
678
|
+
# An enumerable of String instances.
|
679
|
+
# See Google::Gax::PagedEnumerable documentation for other
|
680
|
+
# operations such as per-page iteration or access to the response
|
681
|
+
# object.
|
682
|
+
# @raise [Google::Gax::GaxError] if the RPC is aborted.
|
683
|
+
# @example
|
684
|
+
# require "google/cloud/pubsub"
|
685
|
+
#
|
686
|
+
# publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
|
687
|
+
# formatted_topic = Google::Cloud::PubSub::V1::PublisherClient.topic_path("[PROJECT]", "[TOPIC]")
|
688
|
+
#
|
689
|
+
# # Iterate over all results.
|
690
|
+
# publisher_client.list_topic_snapshots(formatted_topic).each do |element|
|
691
|
+
# # Process element.
|
692
|
+
# end
|
693
|
+
#
|
694
|
+
# # Or iterate over results one page at a time.
|
695
|
+
# publisher_client.list_topic_snapshots(formatted_topic).each_page do |page|
|
696
|
+
# # Process each page at a time.
|
697
|
+
# page.each do |element|
|
698
|
+
# # Process element.
|
699
|
+
# end
|
700
|
+
# end
|
701
|
+
|
702
|
+
def list_topic_snapshots \
|
703
|
+
topic,
|
704
|
+
page_size: nil,
|
705
|
+
options: nil,
|
706
|
+
&block
|
707
|
+
req = {
|
708
|
+
topic: topic,
|
709
|
+
page_size: page_size
|
710
|
+
}.delete_if { |_, v| v.nil? }
|
711
|
+
req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::ListTopicSnapshotsRequest)
|
712
|
+
@list_topic_snapshots.call(req, options, &block)
|
713
|
+
end
|
714
|
+
|
618
715
|
# Deletes the topic with the given name. Returns `NOT_FOUND` if the topic
|
619
716
|
# does not exist. After a topic is deleted, a new topic may be created with
|
620
717
|
# the same name; this is an entirely new topic with none of the old
|
@@ -653,8 +750,8 @@ module Google
|
|
653
750
|
# Sets the access control policy on the specified resource. Replaces
|
654
751
|
# any existing policy.
|
655
752
|
#
|
656
|
-
# Can return
|
657
|
-
#
|
753
|
+
# Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
|
754
|
+
# errors.
|
658
755
|
#
|
659
756
|
# @param resource [String]
|
660
757
|
# REQUIRED: The resource for which the policy is being specified.
|
@@ -678,11 +775,13 @@ module Google
|
|
678
775
|
# require "google/cloud/pubsub"
|
679
776
|
#
|
680
777
|
# publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
|
681
|
-
#
|
778
|
+
#
|
779
|
+
# # TODO: Initialize `resource`:
|
780
|
+
# resource = ''
|
682
781
|
#
|
683
782
|
# # TODO: Initialize `policy`:
|
684
783
|
# policy = {}
|
685
|
-
# response = publisher_client.set_iam_policy(
|
784
|
+
# response = publisher_client.set_iam_policy(resource, policy)
|
686
785
|
|
687
786
|
def set_iam_policy \
|
688
787
|
resource,
|
@@ -720,8 +819,10 @@ module Google
|
|
720
819
|
# require "google/cloud/pubsub"
|
721
820
|
#
|
722
821
|
# publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
|
723
|
-
#
|
724
|
-
#
|
822
|
+
#
|
823
|
+
# # TODO: Initialize `resource`:
|
824
|
+
# resource = ''
|
825
|
+
# response = publisher_client.get_iam_policy(resource)
|
725
826
|
|
726
827
|
def get_iam_policy \
|
727
828
|
resource,
|
@@ -738,7 +839,7 @@ module Google
|
|
738
839
|
|
739
840
|
# Returns permissions that a caller has on the specified resource. If the
|
740
841
|
# resource does not exist, this will return an empty set of
|
741
|
-
# permissions, not a NOT_FOUND error.
|
842
|
+
# permissions, not a `NOT_FOUND` error.
|
742
843
|
#
|
743
844
|
# Note: This operation is designed to be used for building
|
744
845
|
# permission-aware UIs and command-line tools, not for authorization
|
@@ -764,11 +865,13 @@ module Google
|
|
764
865
|
# require "google/cloud/pubsub"
|
765
866
|
#
|
766
867
|
# publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
|
767
|
-
#
|
868
|
+
#
|
869
|
+
# # TODO: Initialize `resource`:
|
870
|
+
# resource = ''
|
768
871
|
#
|
769
872
|
# # TODO: Initialize `permissions`:
|
770
873
|
# permissions = []
|
771
|
-
# response = publisher_client.test_iam_permissions(
|
874
|
+
# response = publisher_client.test_iam_permissions(resource, permissions)
|
772
875
|
|
773
876
|
def test_iam_permissions \
|
774
877
|
resource,
|
@@ -782,6 +885,40 @@ module Google
|
|
782
885
|
req = Google::Gax::to_proto(req, Google::Iam::V1::TestIamPermissionsRequest)
|
783
886
|
@test_iam_permissions.call(req, options, &block)
|
784
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
|
785
922
|
end
|
786
923
|
end
|
787
924
|
end
|