google-cloud-pubsub 1.5.0 → 1.8.0
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 +14 -8
- data/lib/google/cloud/pubsub/subscriber/stream.rb +1 -0
- data/lib/google/cloud/pubsub/subscription.rb +74 -2
- data/lib/google/cloud/pubsub/subscription/push_config.rb +2 -2
- data/lib/google/cloud/pubsub/topic.rb +25 -2
- data/lib/google/cloud/pubsub/v1/doc/google/pubsub/v1/pubsub.rb +58 -24
- data/lib/google/cloud/pubsub/v1/publisher_client.rb +139 -10
- data/lib/google/cloud/pubsub/v1/publisher_client_config.json +15 -0
- data/lib/google/cloud/pubsub/v1/subscriber_client.rb +58 -17
- 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 +10 -0
- data/lib/google/pubsub/v1/pubsub_services_pb.rb +6 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5dc069dbd6e0c8e77d39c6a27b148755fe6935d58ca2af7babc2c167c22513e0
|
4
|
+
data.tar.gz: b2509a217ba7e2a76675a95e1b95884c1e285224c8b194af9299e56aedf9ceea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5d900b940dd93fb85be47f23f233d9183a5cb150a18a7e93687ed4dba45ece70d044129ccc5162477f0bc4a58b439c25b7aca2cc3ccdc5dc1ff7434b869b5e6
|
7
|
+
data.tar.gz: 4e5960220728a2ab73ff69ee3da5a6e11322a6fb1c50d40d7aadaffb7adf26d01383a9972d15ea2af0ed29b3b867f8b05b4194dac55db9f3c808eeea55030e51
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,48 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 1.8.0 / 2020-06-29
|
4
|
+
|
5
|
+
#### Features
|
6
|
+
|
7
|
+
* Add Subscription#filter
|
8
|
+
|
9
|
+
### 1.7.1 / 2020-05-28
|
10
|
+
|
11
|
+
#### Documentation
|
12
|
+
|
13
|
+
* Fix a few broken links
|
14
|
+
|
15
|
+
### 1.7.0 / 2020-05-21
|
16
|
+
|
17
|
+
#### Features
|
18
|
+
|
19
|
+
* Add Retry Policy support
|
20
|
+
* Add RetryPolicy
|
21
|
+
* Add retry_policy param to Topic#subscribe
|
22
|
+
* Add Subscription#retry_policy
|
23
|
+
* Add Subscription#retry_policy=
|
24
|
+
* Set client-scoped UUID in initial StreamingPullRequest#client_id
|
25
|
+
|
26
|
+
### 1.6.1 / 2020-05-06
|
27
|
+
|
28
|
+
#### Documentation
|
29
|
+
|
30
|
+
* Fix example in Emulator documentation
|
31
|
+
* Remove experimental notice from ReceivedMessage#delivery_attempt
|
32
|
+
* Wrap example URLs in backticks
|
33
|
+
|
34
|
+
### 1.6.0 / 2020-04-06
|
35
|
+
|
36
|
+
#### Features
|
37
|
+
|
38
|
+
* Add list_topic_snapshots and get_snapshot
|
39
|
+
* Add PublisherClient#list_topic_snapshots
|
40
|
+
* Add SubscriberClient#get_snapshot
|
41
|
+
|
42
|
+
#### Documentation
|
43
|
+
|
44
|
+
* Remove a spurious link in the low-level interface documentation.
|
45
|
+
|
3
46
|
### 1.5.0 / 2020-03-25
|
4
47
|
|
5
48
|
#### Features
|
data/EMULATOR.md
CHANGED
@@ -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"
|
data/TROUBLESHOOTING.md
CHANGED
@@ -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/
|
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
|
-
[
|
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,7 @@ 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
|
366
367
|
end
|
367
368
|
end
|
368
369
|
|
@@ -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
|
-
#
|
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
|
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
|
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
|
@@ -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,
|
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"
|
111
|
-
#
|
112
|
-
#
|
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
|
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
|
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
|
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
|
-
#
|
328
|
-
#
|
329
|
-
#
|
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.
|
@@ -399,7 +411,7 @@ module Google
|
|
399
411
|
# @!attribute [rw] push_endpoint
|
400
412
|
# @return [String]
|
401
413
|
# A URL locating the endpoint to which messages should be pushed.
|
402
|
-
# For example, a Webhook endpoint might use
|
414
|
+
# For example, a Webhook endpoint might use `https://example.com/push`.
|
403
415
|
# @!attribute [rw] attributes
|
404
416
|
# @return [Hash{String => String}]
|
405
417
|
# Endpoint configuration attributes that can be used to control different
|
@@ -458,8 +470,11 @@ module Google
|
|
458
470
|
# The message.
|
459
471
|
# @!attribute [rw] delivery_attempt
|
460
472
|
# @return [Integer]
|
461
|
-
#
|
462
|
-
#
|
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
|
-
#
|
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
|
@@ -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,9 +119,18 @@ 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
|
-
# @deprecated Multi-pattern resource names will have unified creation and parsing helper functions.
|
114
|
-
# This helper function will be deleted in the next major version.
|
115
134
|
# @param project [String]
|
116
135
|
# @param topic [String]
|
117
136
|
# @return [String]
|
@@ -294,6 +313,14 @@ module Google
|
|
294
313
|
{'topic' => request.topic}
|
295
314
|
end
|
296
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
|
+
)
|
297
324
|
@delete_topic = Google::Gax.create_api_call(
|
298
325
|
@publisher_stub.method(:delete_topic),
|
299
326
|
defaults["delete_topic"],
|
@@ -326,6 +353,14 @@ module Google
|
|
326
353
|
{'resource' => request.resource}
|
327
354
|
end
|
328
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
|
+
)
|
329
364
|
end
|
330
365
|
|
331
366
|
# Service calls
|
@@ -397,9 +432,9 @@ module Google
|
|
397
432
|
# @param update_mask [Google::Protobuf::FieldMask | Hash]
|
398
433
|
# Required. Indicates which fields in the provided topic to update. Must be
|
399
434
|
# specified and non-empty. Note that if `update_mask` contains
|
400
|
-
# "message_storage_policy"
|
401
|
-
#
|
402
|
-
#
|
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.
|
403
438
|
# A hash of the same form as `Google::Protobuf::FieldMask`
|
404
439
|
# can also be provided.
|
405
440
|
# @param options [Google::Gax::CallOptions]
|
@@ -562,7 +597,7 @@ module Google
|
|
562
597
|
@list_topics.call(req, options, &block)
|
563
598
|
end
|
564
599
|
|
565
|
-
# Lists the names of the subscriptions on this topic.
|
600
|
+
# Lists the names of the attached subscriptions on this topic.
|
566
601
|
#
|
567
602
|
# @param topic [String]
|
568
603
|
# Required. The name of the topic that subscriptions are attached to.
|
@@ -617,6 +652,66 @@ module Google
|
|
617
652
|
@list_topic_subscriptions.call(req, options, &block)
|
618
653
|
end
|
619
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
|
+
|
620
715
|
# Deletes the topic with the given name. Returns `NOT_FOUND` if the topic
|
621
716
|
# does not exist. After a topic is deleted, a new topic may be created with
|
622
717
|
# the same name; this is an entirely new topic with none of the old
|
@@ -655,8 +750,8 @@ module Google
|
|
655
750
|
# Sets the access control policy on the specified resource. Replaces
|
656
751
|
# any existing policy.
|
657
752
|
#
|
658
|
-
# Can return
|
659
|
-
#
|
753
|
+
# Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
|
754
|
+
# errors.
|
660
755
|
#
|
661
756
|
# @param resource [String]
|
662
757
|
# REQUIRED: The resource for which the policy is being specified.
|
@@ -744,7 +839,7 @@ module Google
|
|
744
839
|
|
745
840
|
# Returns permissions that a caller has on the specified resource. If the
|
746
841
|
# resource does not exist, this will return an empty set of
|
747
|
-
# permissions, not a NOT_FOUND error.
|
842
|
+
# permissions, not a `NOT_FOUND` error.
|
748
843
|
#
|
749
844
|
# Note: This operation is designed to be used for building
|
750
845
|
# permission-aware UIs and command-line tools, not for authorization
|
@@ -790,6 +885,40 @@ module Google
|
|
790
885
|
req = Google::Gax::to_proto(req, Google::Iam::V1::TestIamPermissionsRequest)
|
791
886
|
@test_iam_permissions.call(req, options, &block)
|
792
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
|
793
922
|
end
|
794
923
|
end
|
795
924
|
end
|
@@ -7,9 +7,14 @@
|
|
7
7
|
"UNAVAILABLE",
|
8
8
|
"UNKNOWN"
|
9
9
|
],
|
10
|
+
"non_idempotent2": [],
|
10
11
|
"non_idempotent": [
|
11
12
|
"UNAVAILABLE"
|
12
13
|
],
|
14
|
+
"idempotent2": [
|
15
|
+
"DEADLINE_EXCEEDED",
|
16
|
+
"UNAVAILABLE"
|
17
|
+
],
|
13
18
|
"none": [],
|
14
19
|
"publish": [
|
15
20
|
"ABORTED",
|
@@ -79,6 +84,11 @@
|
|
79
84
|
"retry_codes_name": "idempotent",
|
80
85
|
"retry_params_name": "default"
|
81
86
|
},
|
87
|
+
"ListTopicSnapshots": {
|
88
|
+
"timeout_millis": 60000,
|
89
|
+
"retry_codes_name": "idempotent2",
|
90
|
+
"retry_params_name": "default"
|
91
|
+
},
|
82
92
|
"DeleteTopic": {
|
83
93
|
"timeout_millis": 60000,
|
84
94
|
"retry_codes_name": "non_idempotent",
|
@@ -98,6 +108,11 @@
|
|
98
108
|
"timeout_millis": 60000,
|
99
109
|
"retry_codes_name": "non_idempotent",
|
100
110
|
"retry_params_name": "default"
|
111
|
+
},
|
112
|
+
"DetachSubscription": {
|
113
|
+
"timeout_millis": 60000,
|
114
|
+
"retry_codes_name": "non_idempotent2",
|
115
|
+
"retry_params_name": "default"
|
101
116
|
}
|
102
117
|
}
|
103
118
|
}
|
@@ -134,8 +134,6 @@ module Google
|
|
134
134
|
end
|
135
135
|
|
136
136
|
# Returns a fully-qualified topic resource name string.
|
137
|
-
# @deprecated Multi-pattern resource names will have unified creation and parsing helper functions.
|
138
|
-
# This helper function will be deleted in the next major version.
|
139
137
|
# @param project [String]
|
140
138
|
# @param topic [String]
|
141
139
|
# @return [String]
|
@@ -309,6 +307,14 @@ module Google
|
|
309
307
|
{'subscription' => request.subscription}
|
310
308
|
end
|
311
309
|
)
|
310
|
+
@get_snapshot = Google::Gax.create_api_call(
|
311
|
+
@subscriber_stub.method(:get_snapshot),
|
312
|
+
defaults["get_snapshot"],
|
313
|
+
exception_transformer: exception_transformer,
|
314
|
+
params_extractor: proc do |request|
|
315
|
+
{'snapshot' => request.snapshot}
|
316
|
+
end
|
317
|
+
)
|
312
318
|
@modify_ack_deadline = Google::Gax.create_api_call(
|
313
319
|
@subscriber_stub.method(:modify_ack_deadline),
|
314
320
|
defaults["modify_ack_deadline"],
|
@@ -504,13 +510,11 @@ module Google
|
|
504
510
|
# A hash of the same form as `Google::Cloud::PubSub::V1::ExpirationPolicy`
|
505
511
|
# can also be provided.
|
506
512
|
# @param filter [String]
|
507
|
-
# An expression written in the
|
513
|
+
# An expression written in the Pub/Sub [filter
|
514
|
+
# language](https://cloud.google.com/pubsub/docs/filtering). If non-empty,
|
508
515
|
# then only `PubsubMessage`s whose `attributes` field matches the filter are
|
509
516
|
# delivered on this subscription. If empty, then no messages are filtered
|
510
517
|
# out.
|
511
|
-
# <b>EXPERIMENTAL:</b> This feature is part of a closed alpha release. This
|
512
|
-
# API might be changed in backward-incompatible ways and is not recommended
|
513
|
-
# for production use. It is not subject to any SLA or deprecation policy.
|
514
518
|
# @param dead_letter_policy [Google::Cloud::PubSub::V1::DeadLetterPolicy | Hash]
|
515
519
|
# A policy that specifies the conditions for dead lettering messages in
|
516
520
|
# this subscription. If dead_letter_policy is not set, dead lettering
|
@@ -520,24 +524,24 @@ module Google
|
|
520
524
|
# parent project (i.e.,
|
521
525
|
# service-\\{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have
|
522
526
|
# permission to Acknowledge() messages on this subscription.
|
523
|
-
# <b>EXPERIMENTAL:</b> This feature is part of a closed alpha release. This
|
524
|
-
# API might be changed in backward-incompatible ways and is not recommended
|
525
|
-
# for production use. It is not subject to any SLA or deprecation policy.
|
526
527
|
# A hash of the same form as `Google::Cloud::PubSub::V1::DeadLetterPolicy`
|
527
528
|
# can also be provided.
|
528
529
|
# @param retry_policy [Google::Cloud::PubSub::V1::RetryPolicy | Hash]
|
529
|
-
# A policy that specifies how
|
530
|
+
# A policy that specifies how Pub/Sub retries message delivery for this
|
530
531
|
# subscription.
|
531
532
|
#
|
532
533
|
# If not set, the default retry policy is applied. This generally implies
|
533
534
|
# that messages will be retried as soon as possible for healthy subscribers.
|
534
535
|
# RetryPolicy will be triggered on NACKs or acknowledgement deadline
|
535
536
|
# exceeded events for a given message.
|
536
|
-
# <b>EXPERIMENTAL:</b> This API might be changed in backward-incompatible
|
537
|
-
# ways and is not recommended for production use. It is not subject to any
|
538
|
-
# SLA or deprecation policy.
|
539
537
|
# A hash of the same form as `Google::Cloud::PubSub::V1::RetryPolicy`
|
540
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.
|
541
545
|
# @param options [Google::Gax::CallOptions]
|
542
546
|
# Overrides the default settings for this call, e.g, timeout,
|
543
547
|
# retries, etc.
|
@@ -567,6 +571,7 @@ module Google
|
|
567
571
|
filter: nil,
|
568
572
|
dead_letter_policy: nil,
|
569
573
|
retry_policy: nil,
|
574
|
+
detached: nil,
|
570
575
|
options: nil,
|
571
576
|
&block
|
572
577
|
req = {
|
@@ -581,7 +586,8 @@ module Google
|
|
581
586
|
expiration_policy: expiration_policy,
|
582
587
|
filter: filter,
|
583
588
|
dead_letter_policy: dead_letter_policy,
|
584
|
-
retry_policy: retry_policy
|
589
|
+
retry_policy: retry_policy,
|
590
|
+
detached: detached
|
585
591
|
}.delete_if { |_, v| v.nil? }
|
586
592
|
req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::Subscription)
|
587
593
|
@create_subscription.call(req, options, &block)
|
@@ -752,6 +758,41 @@ module Google
|
|
752
758
|
nil
|
753
759
|
end
|
754
760
|
|
761
|
+
# Gets the configuration details of a snapshot. Snapshots are used in
|
762
|
+
# <a href="https://cloud.google.com/pubsub/docs/replay-overview">Seek</a>
|
763
|
+
# operations, which allow you to manage message acknowledgments in bulk. That
|
764
|
+
# is, you can set the acknowledgment state of messages in an existing
|
765
|
+
# subscription to the state captured by a snapshot.
|
766
|
+
#
|
767
|
+
# @param snapshot [String]
|
768
|
+
# Required. The name of the snapshot to get.
|
769
|
+
# Format is `projects/{project}/snapshots/{snap}`.
|
770
|
+
# @param options [Google::Gax::CallOptions]
|
771
|
+
# Overrides the default settings for this call, e.g, timeout,
|
772
|
+
# retries, etc.
|
773
|
+
# @yield [result, operation] Access the result along with the RPC operation
|
774
|
+
# @yieldparam result [Google::Cloud::PubSub::V1::Snapshot]
|
775
|
+
# @yieldparam operation [GRPC::ActiveCall::Operation]
|
776
|
+
# @return [Google::Cloud::PubSub::V1::Snapshot]
|
777
|
+
# @raise [Google::Gax::GaxError] if the RPC is aborted.
|
778
|
+
# @example
|
779
|
+
# require "google/cloud/pubsub"
|
780
|
+
#
|
781
|
+
# subscriber_client = Google::Cloud::PubSub::Subscriber.new(version: :v1)
|
782
|
+
# formatted_snapshot = Google::Cloud::PubSub::V1::SubscriberClient.snapshot_path("[PROJECT]", "[SNAPSHOT]")
|
783
|
+
# response = subscriber_client.get_snapshot(formatted_snapshot)
|
784
|
+
|
785
|
+
def get_snapshot \
|
786
|
+
snapshot,
|
787
|
+
options: nil,
|
788
|
+
&block
|
789
|
+
req = {
|
790
|
+
snapshot: snapshot
|
791
|
+
}.delete_if { |_, v| v.nil? }
|
792
|
+
req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::GetSnapshotRequest)
|
793
|
+
@get_snapshot.call(req, options, &block)
|
794
|
+
end
|
795
|
+
|
755
796
|
# Modifies the ack deadline for a specific message. This method is useful
|
756
797
|
# to indicate that more time is needed to process a message by the
|
757
798
|
# subscriber, or to make the message available for redelivery if the
|
@@ -1281,8 +1322,8 @@ module Google
|
|
1281
1322
|
# Sets the access control policy on the specified resource. Replaces
|
1282
1323
|
# any existing policy.
|
1283
1324
|
#
|
1284
|
-
# Can return
|
1285
|
-
#
|
1325
|
+
# Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
|
1326
|
+
# errors.
|
1286
1327
|
#
|
1287
1328
|
# @param resource [String]
|
1288
1329
|
# REQUIRED: The resource for which the policy is being specified.
|
@@ -1370,7 +1411,7 @@ module Google
|
|
1370
1411
|
|
1371
1412
|
# Returns permissions that a caller has on the specified resource. If the
|
1372
1413
|
# resource does not exist, this will return an empty set of
|
1373
|
-
# permissions, not a NOT_FOUND error.
|
1414
|
+
# permissions, not a `NOT_FOUND` error.
|
1374
1415
|
#
|
1375
1416
|
# Note: This operation is designed to be used for building
|
1376
1417
|
# permission-aware UIs and command-line tools, not for authorization
|
@@ -10,6 +10,10 @@
|
|
10
10
|
"non_idempotent": [
|
11
11
|
"UNAVAILABLE"
|
12
12
|
],
|
13
|
+
"idempotent2": [
|
14
|
+
"DEADLINE_EXCEEDED",
|
15
|
+
"UNAVAILABLE"
|
16
|
+
],
|
13
17
|
"streaming_pull": [
|
14
18
|
"ABORTED",
|
15
19
|
"DEADLINE_EXCEEDED",
|
@@ -73,6 +77,11 @@
|
|
73
77
|
"retry_codes_name": "non_idempotent",
|
74
78
|
"retry_params_name": "default"
|
75
79
|
},
|
80
|
+
"GetSnapshot": {
|
81
|
+
"timeout_millis": 60000,
|
82
|
+
"retry_codes_name": "idempotent2",
|
83
|
+
"retry_params_name": "default"
|
84
|
+
},
|
76
85
|
"ModifyAckDeadline": {
|
77
86
|
"timeout_millis": 60000,
|
78
87
|
"retry_codes_name": "non_idempotent",
|
@@ -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.
|
4
|
+
version: 1.8.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-
|
12
|
+
date: 2020-06-29 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.
|
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.
|
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.
|
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
|