google-cloud-pubsub 2.0.0 → 2.3.1
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/CHANGELOG.md +43 -0
- data/CONTRIBUTING.md +1 -1
- data/OVERVIEW.md +26 -58
- data/lib/google-cloud-pubsub.rb +1 -0
- data/lib/google/cloud/pubsub/async_publisher.rb +1 -1
- data/lib/google/cloud/pubsub/message.rb +1 -1
- data/lib/google/cloud/pubsub/project.rb +1 -1
- data/lib/google/cloud/pubsub/received_message.rb +4 -4
- data/lib/google/cloud/pubsub/retry_policy.rb +0 -3
- data/lib/google/cloud/pubsub/service.rb +1 -6
- data/lib/google/cloud/pubsub/subscriber.rb +17 -4
- data/lib/google/cloud/pubsub/subscriber/inventory.rb +5 -2
- data/lib/google/cloud/pubsub/subscriber/stream.rb +2 -2
- data/lib/google/cloud/pubsub/subscription.rb +85 -28
- data/lib/google/cloud/pubsub/subscription/push_config.rb +55 -31
- data/lib/google/cloud/pubsub/topic.rb +49 -18
- data/lib/google/cloud/pubsub/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3af82f9222001a7e9b8a4648b53370da523629e3950822ec70b2994c7ff1ab69
|
4
|
+
data.tar.gz: c65a361d505e5416be05189668fb62260b91eabb89be8fedc8b4928a9a0724dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0fd3399bed14e3ec636a352cefc9c03a34f76ad20adbd12c3c043bdebf23ea75c68b9cab5e0fe0e259911b7a466f8b0e4d0b138ea9cd3244653d13749b38920
|
7
|
+
data.tar.gz: 91243885834f4cb5c3423bc8f6e75383d95cbdb5b09b6a4bd409b701a6c0433838882188a28cf150302cd4ea3fa8c48afc669f7590d9578d67858b246ad77fc7
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,48 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 2.3.1 / 2021-01-13
|
4
|
+
|
5
|
+
#### Bug Fixes
|
6
|
+
|
7
|
+
* Update Subscription#retry_policy=
|
8
|
+
* Remove conditional RPC to fetch full resource before update.
|
9
|
+
|
10
|
+
### 2.3.0 / 2020-11-18
|
11
|
+
|
12
|
+
#### Features
|
13
|
+
|
14
|
+
* Add inventory.use_legacy_flow_control to listen options
|
15
|
+
* Add inventory.use_legacy_flow_control to Subscription#listen options
|
16
|
+
* Add Subscriber#use_legacy_flow_control?
|
17
|
+
|
18
|
+
#### Documentation
|
19
|
+
|
20
|
+
* Remove EXPERIMENTAL label from RetryPolicy docs
|
21
|
+
|
22
|
+
### 2.2.0 / 2020-11-11
|
23
|
+
|
24
|
+
#### Features
|
25
|
+
|
26
|
+
* Add Subscription#remove_dead_letter_policy
|
27
|
+
|
28
|
+
### 2.1.1 / 2020-10-26
|
29
|
+
|
30
|
+
#### Documentation
|
31
|
+
|
32
|
+
* Update deprecated attribute name limit to max_outstanding_messages
|
33
|
+
|
34
|
+
### 2.1.0 / 2020-09-17
|
35
|
+
|
36
|
+
#### Features
|
37
|
+
|
38
|
+
* quota_project can be set via library configuration ([#7630](https://www.github.com/googleapis/google-cloud-ruby/issues/7630))
|
39
|
+
* Add push_config (PushConfig) param to Topic#subscribe
|
40
|
+
* Make PushConfig constructor public.
|
41
|
+
|
42
|
+
#### Documentation
|
43
|
+
|
44
|
+
* Update sample code for on_error, at_exit, and concurrency tuning
|
45
|
+
|
3
46
|
### 2.0.0 / 2020-08-06
|
4
47
|
|
5
48
|
This is a major update that removes the "low-level" client interface code, and
|
data/CONTRIBUTING.md
CHANGED
data/OVERVIEW.md
CHANGED
@@ -142,7 +142,7 @@ topic.publish_async "task completed" do |result|
|
|
142
142
|
end
|
143
143
|
end
|
144
144
|
|
145
|
-
topic.async_publisher.stop
|
145
|
+
topic.async_publisher.stop!
|
146
146
|
```
|
147
147
|
|
148
148
|
Or multiple messages can be published in batches at the same time by passing a
|
@@ -174,16 +174,32 @@ pubsub = Google::Cloud::PubSub.new
|
|
174
174
|
|
175
175
|
sub = pubsub.subscription "my-topic-sub"
|
176
176
|
|
177
|
-
subscriber
|
177
|
+
# Create a subscriber to listen for available messages.
|
178
|
+
# By default, this block will be called on 8 concurrent threads
|
179
|
+
# but this can be tuned with the `threads` option.
|
180
|
+
# The `streams` and `inventory` parameters allow further tuning.
|
181
|
+
subscriber = sub.listen threads: { callback: 16 } do |received_message|
|
178
182
|
# process message
|
183
|
+
puts "Data: #{received_message.message.data}, published at #{received_message.message.published_at}"
|
179
184
|
received_message.acknowledge!
|
180
185
|
end
|
181
186
|
|
187
|
+
# Handle exceptions from listener
|
188
|
+
subscriber.on_error do |exception|
|
189
|
+
puts "Exception: #{exception.class} #{exception.message}"
|
190
|
+
end
|
191
|
+
|
192
|
+
# Gracefully shut down the subscriber on program exit, blocking until
|
193
|
+
# all received messages have been processed or 10 seconds have passed
|
194
|
+
at_exit do
|
195
|
+
subscriber.stop!(10)
|
196
|
+
end
|
197
|
+
|
182
198
|
# Start background threads that will call the block passed to listen.
|
183
199
|
subscriber.start
|
184
200
|
|
185
|
-
#
|
186
|
-
|
201
|
+
# Block, letting processing threads continue in the background
|
202
|
+
sleep
|
187
203
|
```
|
188
204
|
|
189
205
|
Messages also can be pulled directly in a one-time operation. (See
|
@@ -235,7 +251,7 @@ end
|
|
235
251
|
subscriber.start
|
236
252
|
|
237
253
|
# Shut down the subscriber when ready to stop receiving messages.
|
238
|
-
subscriber.stop
|
254
|
+
subscriber.stop!
|
239
255
|
```
|
240
256
|
|
241
257
|
Or, multiple messages can be acknowledged in a single API call: (See
|
@@ -277,7 +293,7 @@ end
|
|
277
293
|
subscriber.start
|
278
294
|
|
279
295
|
# Shut down the subscriber when ready to stop receiving messages.
|
280
|
-
subscriber.stop
|
296
|
+
subscriber.stop!
|
281
297
|
```
|
282
298
|
|
283
299
|
The message can also be made available for immediate redelivery:
|
@@ -299,7 +315,7 @@ end
|
|
299
315
|
subscriber.start
|
300
316
|
|
301
317
|
# Shut down the subscriber when ready to stop receiving messages.
|
302
|
-
subscriber.stop
|
318
|
+
subscriber.stop!
|
303
319
|
```
|
304
320
|
|
305
321
|
Multiple messages can be delayed or made available for immediate redelivery:
|
@@ -353,7 +369,7 @@ topic.publish_async "task completed",
|
|
353
369
|
ordering_key: "task-key"
|
354
370
|
|
355
371
|
# Shut down the publisher when ready to stop publishing messages.
|
356
|
-
topic.async_publisher.stop
|
372
|
+
topic.async_publisher.stop!
|
357
373
|
```
|
358
374
|
|
359
375
|
### Handling errors with Ordered Keys
|
@@ -395,7 +411,7 @@ end
|
|
395
411
|
subscriber.start
|
396
412
|
|
397
413
|
# Shut down the subscriber when ready to stop receiving messages.
|
398
|
-
subscriber.stop
|
414
|
+
subscriber.stop!
|
399
415
|
```
|
400
416
|
|
401
417
|
## Minimizing API calls before receiving and acknowledging messages
|
@@ -425,7 +441,7 @@ end
|
|
425
441
|
subscriber.start
|
426
442
|
|
427
443
|
# Shut down the subscriber when ready to stop receiving messages.
|
428
|
-
subscriber.stop
|
444
|
+
subscriber.stop!
|
429
445
|
```
|
430
446
|
|
431
447
|
Skipping API calls may be used to avoid `Google::Cloud::PermissionDeniedError`
|
@@ -464,54 +480,6 @@ sub.acknowledge received_messages
|
|
464
480
|
sub.seek snapshot
|
465
481
|
```
|
466
482
|
|
467
|
-
## Listening for Messages
|
468
|
-
|
469
|
-
A subscriber object can be created using `listen`, which streams messages from
|
470
|
-
the backend and processes them as they are received. (See
|
471
|
-
{Google::Cloud::PubSub::Subscription#listen Subscription#listen} and
|
472
|
-
{Google::Cloud::PubSub::Subscriber Subscriber})
|
473
|
-
|
474
|
-
```ruby
|
475
|
-
require "google/cloud/pubsub"
|
476
|
-
|
477
|
-
pubsub = Google::Cloud::PubSub.new
|
478
|
-
|
479
|
-
sub = pubsub.subscription "my-topic-sub"
|
480
|
-
|
481
|
-
subscriber = sub.listen do |received_message|
|
482
|
-
# process message
|
483
|
-
received_message.acknowledge!
|
484
|
-
end
|
485
|
-
|
486
|
-
# Start background threads that will call the block passed to listen.
|
487
|
-
subscriber.start
|
488
|
-
|
489
|
-
# Shut down the subscriber when ready to stop receiving messages.
|
490
|
-
subscriber.stop.wait!
|
491
|
-
```
|
492
|
-
|
493
|
-
The subscriber object can be configured to control the number of concurrent
|
494
|
-
streams to open, the number of received messages to be collected, and the number
|
495
|
-
of threads each stream opens for concurrent calls made to handle the received
|
496
|
-
messages.
|
497
|
-
|
498
|
-
```ruby
|
499
|
-
require "google/cloud/pubsub"
|
500
|
-
|
501
|
-
pubsub = Google::Cloud::PubSub.new
|
502
|
-
|
503
|
-
sub = pubsub.subscription "my-topic-sub"
|
504
|
-
|
505
|
-
subscriber = sub.listen threads: { callback: 16 } do |received_message|
|
506
|
-
# store the message somewhere before acknowledging
|
507
|
-
store_in_backend received_message.data # takes a few seconds
|
508
|
-
received_message.acknowledge!
|
509
|
-
end
|
510
|
-
|
511
|
-
# Start background threads that will call the block passed to listen.
|
512
|
-
subscriber.start
|
513
|
-
```
|
514
|
-
|
515
483
|
## Working Across Projects
|
516
484
|
|
517
485
|
All calls to the Pub/Sub service use the same project and credentials provided
|
data/lib/google-cloud-pubsub.rb
CHANGED
@@ -132,6 +132,7 @@ Google::Cloud.configure.add_config! :pubsub do |config|
|
|
132
132
|
config.add_field! :credentials, default_creds, match: [String, Hash, Google::Auth::Credentials], allow_nil: true
|
133
133
|
config.add_alias! :keyfile, :credentials
|
134
134
|
config.add_field! :scope, default_scopes, match: [String, Array]
|
135
|
+
config.add_field! :quota_project, nil, match: String
|
135
136
|
config.add_field! :timeout, nil, match: Integer
|
136
137
|
config.add_field! :emulator_host, default_emulator, match: String, allow_nil: true
|
137
138
|
config.add_field! :on_error, nil, match: Proc
|
@@ -42,7 +42,7 @@ module Google
|
|
42
42
|
# end
|
43
43
|
# end
|
44
44
|
#
|
45
|
-
# topic.async_publisher.stop
|
45
|
+
# topic.async_publisher.stop!
|
46
46
|
#
|
47
47
|
# @attr_reader [String] topic_name The name of the topic the messages are published to. In the form of
|
48
48
|
# "/projects/project-identifier/topics/topic-name".
|
@@ -39,7 +39,7 @@ module Google
|
|
39
39
|
# subscriber.start
|
40
40
|
#
|
41
41
|
# # Shut down the subscriber when ready to stop receiving messages.
|
42
|
-
# subscriber.stop
|
42
|
+
# subscriber.stop!
|
43
43
|
#
|
44
44
|
class ReceivedMessage
|
45
45
|
##
|
@@ -177,7 +177,7 @@ module Google
|
|
177
177
|
# subscriber.start
|
178
178
|
#
|
179
179
|
# # Shut down the subscriber when ready to stop receiving messages.
|
180
|
-
# subscriber.stop
|
180
|
+
# subscriber.stop!
|
181
181
|
#
|
182
182
|
def acknowledge!
|
183
183
|
ensure_subscription!
|
@@ -214,7 +214,7 @@ module Google
|
|
214
214
|
# subscriber.start
|
215
215
|
#
|
216
216
|
# # Shut down the subscriber when ready to stop receiving messages.
|
217
|
-
# subscriber.stop
|
217
|
+
# subscriber.stop!
|
218
218
|
#
|
219
219
|
def modify_ack_deadline! new_deadline
|
220
220
|
ensure_subscription!
|
@@ -244,7 +244,7 @@ module Google
|
|
244
244
|
# subscriber.start
|
245
245
|
#
|
246
246
|
# # Shut down the subscriber when ready to stop receiving messages.
|
247
|
-
# subscriber.stop
|
247
|
+
# subscriber.stop!
|
248
248
|
#
|
249
249
|
def reject!
|
250
250
|
modify_ack_deadline! 0
|
@@ -31,9 +31,6 @@ module Google
|
|
31
31
|
# Retry Policy is implemented on a best effort basis. At times, the delay between consecutive deliveries may not
|
32
32
|
# match the configuration. That is, delay can be more or less than configured backoff.
|
33
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
34
|
# @attr [Numeric] minimum_backoff The minimum delay between consecutive deliveries of a given message. Value
|
38
35
|
# should be between 0 and 600 seconds. The default value is 10 seconds.
|
39
36
|
# @attr [Numeric] maximum_backoff The maximum delay between consecutive deliveries of a given message. Value
|
@@ -175,15 +175,10 @@ module Google
|
|
175
175
|
##
|
176
176
|
# Creates a subscription on a given topic for a given subscriber.
|
177
177
|
def create_subscription topic, subscription_name, options = {}
|
178
|
-
push_config = if options[:endpoint]
|
179
|
-
Google::Cloud::PubSub::V1::PushConfig.new \
|
180
|
-
push_endpoint: options[:endpoint],
|
181
|
-
attributes: (options[:attributes] || {}).to_h
|
182
|
-
end
|
183
178
|
subscriber.create_subscription \
|
184
179
|
name: subscription_path(subscription_name, options),
|
185
180
|
topic: topic_path(topic),
|
186
|
-
push_config: push_config,
|
181
|
+
push_config: options[:push_config],
|
187
182
|
ack_deadline_seconds: options[:deadline],
|
188
183
|
retain_acked_messages: options[:retain_acked],
|
189
184
|
message_retention_duration: Convert.number_to_duration(options[:retention]),
|
@@ -41,7 +41,7 @@ module Google
|
|
41
41
|
# subscriber.start
|
42
42
|
#
|
43
43
|
# # Shut down the subscriber when ready to stop receiving messages.
|
44
|
-
# subscriber.stop
|
44
|
+
# subscriber.stop!
|
45
45
|
#
|
46
46
|
# @attr_reader [String] subscription_name The name of the subscription the
|
47
47
|
# messages are pulled from.
|
@@ -240,7 +240,7 @@ module Google
|
|
240
240
|
# subscriber.start
|
241
241
|
#
|
242
242
|
# # Shut down the subscriber when ready to stop receiving messages.
|
243
|
-
# subscriber.stop
|
243
|
+
# subscriber.stop!
|
244
244
|
#
|
245
245
|
def on_error &block
|
246
246
|
synchronize do
|
@@ -276,7 +276,7 @@ module Google
|
|
276
276
|
# subscriber.last_error #=> nil
|
277
277
|
#
|
278
278
|
# # Shut down the subscriber when ready to stop receiving messages.
|
279
|
-
# subscriber.stop
|
279
|
+
# subscriber.stop!
|
280
280
|
#
|
281
281
|
def last_error
|
282
282
|
synchronize { @last_error }
|
@@ -306,6 +306,17 @@ module Google
|
|
306
306
|
# @deprecated Use {#max_outstanding_bytes}.
|
307
307
|
alias inventory_bytesize max_outstanding_bytes
|
308
308
|
|
309
|
+
##
|
310
|
+
# Whether to enforce flow control at the client side only or to enforce it at both the client and
|
311
|
+
# the server. For more details about flow control see https://cloud.google.com/pubsub/docs/pull#config.
|
312
|
+
#
|
313
|
+
# @return [Boolean] `true` when only client side flow control is enforced, `false` when both client and
|
314
|
+
# server side flow control are enforced.
|
315
|
+
#
|
316
|
+
def use_legacy_flow_control?
|
317
|
+
@inventory[:use_legacy_flow_control]
|
318
|
+
end
|
319
|
+
|
309
320
|
##
|
310
321
|
# The number of seconds that received messages can be held awaiting processing. Default is 3,600 (1 hour).
|
311
322
|
#
|
@@ -334,7 +345,8 @@ module Google
|
|
334
345
|
limit: @inventory[:max_outstanding_messages].fdiv(@streams).ceil,
|
335
346
|
bytesize: @inventory[:max_outstanding_bytes].fdiv(@streams).ceil,
|
336
347
|
extension: @inventory[:max_total_lease_duration],
|
337
|
-
max_duration_per_lease_extension: @inventory[:max_duration_per_lease_extension]
|
348
|
+
max_duration_per_lease_extension: @inventory[:max_duration_per_lease_extension],
|
349
|
+
use_legacy_flow_control: @inventory[:use_legacy_flow_control]
|
338
350
|
}
|
339
351
|
end
|
340
352
|
|
@@ -377,6 +389,7 @@ module Google
|
|
377
389
|
@inventory[:max_outstanding_bytes] = Integer(@inventory[:max_outstanding_bytes] || 100_000_000)
|
378
390
|
@inventory[:max_total_lease_duration] = Integer(@inventory[:max_total_lease_duration] || 3600)
|
379
391
|
@inventory[:max_duration_per_lease_extension] = Integer(@inventory[:max_duration_per_lease_extension] || 0)
|
392
|
+
@inventory[:use_legacy_flow_control] = @inventory[:use_legacy_flow_control] || false
|
380
393
|
end
|
381
394
|
|
382
395
|
def default_error_callbacks
|
@@ -30,15 +30,18 @@ module Google
|
|
30
30
|
|
31
31
|
include MonitorMixin
|
32
32
|
|
33
|
-
attr_reader :stream, :limit, :bytesize, :extension, :max_duration_per_lease_extension
|
33
|
+
attr_reader :stream, :limit, :bytesize, :extension, :max_duration_per_lease_extension,
|
34
|
+
:use_legacy_flow_control
|
34
35
|
|
35
|
-
def initialize stream, limit:, bytesize:, extension:, max_duration_per_lease_extension
|
36
|
+
def initialize stream, limit:, bytesize:, extension:, max_duration_per_lease_extension:,
|
37
|
+
use_legacy_flow_control:
|
36
38
|
super()
|
37
39
|
@stream = stream
|
38
40
|
@limit = limit
|
39
41
|
@bytesize = bytesize
|
40
42
|
@extension = extension
|
41
43
|
@max_duration_per_lease_extension = max_duration_per_lease_extension
|
44
|
+
@use_legacy_flow_control = use_legacy_flow_control
|
42
45
|
@inventory = {}
|
43
46
|
@wait_cond = new_cond
|
44
47
|
end
|
@@ -363,8 +363,8 @@ module Google
|
|
363
363
|
req.modify_deadline_ack_ids += @inventory.ack_ids
|
364
364
|
req.modify_deadline_seconds += @inventory.ack_ids.map { @subscriber.deadline }
|
365
365
|
req.client_id = @subscriber.service.client_id
|
366
|
-
req.max_outstanding_messages = @inventory.limit
|
367
|
-
req.max_outstanding_bytes = @inventory.bytesize
|
366
|
+
req.max_outstanding_messages = @inventory.use_legacy_flow_control ? 0 : @inventory.limit
|
367
|
+
req.max_outstanding_bytes = @inventory.use_legacy_flow_control ? 0 : @inventory.bytesize
|
368
368
|
end
|
369
369
|
end
|
370
370
|
|
@@ -43,12 +43,19 @@ module Google
|
|
43
43
|
# received_message.acknowledge!
|
44
44
|
# end
|
45
45
|
#
|
46
|
-
# #
|
47
|
-
# subscriber.
|
46
|
+
# # Handle exceptions from listener
|
47
|
+
# subscriber.on_error do |exception|
|
48
|
+
# puts "Exception: #{exception.class} #{exception.message}"
|
49
|
+
# end
|
48
50
|
#
|
49
|
-
# #
|
50
|
-
#
|
51
|
+
# # Gracefully shut down the subscriber
|
52
|
+
# at_exit do
|
53
|
+
# subscriber.stop!
|
54
|
+
# end
|
51
55
|
#
|
56
|
+
# # Start background threads that will call the block passed to listen.
|
57
|
+
# subscriber.start
|
58
|
+
# sleep
|
52
59
|
class Subscription
|
53
60
|
##
|
54
61
|
# @private The Service object.
|
@@ -323,7 +330,7 @@ module Google
|
|
323
330
|
# If {#expires_in=} is not set, a *default* value of of 31 days will be
|
324
331
|
# used. The minimum allowed value is 1 day.
|
325
332
|
#
|
326
|
-
# Makes an API call to retrieve the value when called on a
|
333
|
+
# Makes an API call to retrieve the expires_in value when called on a
|
327
334
|
# reference object. See {#reference?}.
|
328
335
|
#
|
329
336
|
# @return [Numeric, nil] The expiration duration, or `nil` if unset.
|
@@ -358,6 +365,9 @@ module Google
|
|
358
365
|
# `attributes` field matches the filter are delivered on this subscription. If empty, then no messages are
|
359
366
|
# filtered out.
|
360
367
|
#
|
368
|
+
# Makes an API call to retrieve the filter value when called on a reference
|
369
|
+
# object. See {#reference?}.
|
370
|
+
#
|
361
371
|
# @return [String] The frozen filter string.
|
362
372
|
#
|
363
373
|
def filter
|
@@ -370,8 +380,8 @@ module Google
|
|
370
380
|
# otherwise `nil`. Dead lettering is done on a best effort basis. The same message might be dead lettered
|
371
381
|
# multiple times.
|
372
382
|
#
|
373
|
-
# See also {#dead_letter_topic=}, {#dead_letter_max_delivery_attempts=}
|
374
|
-
# {#
|
383
|
+
# See also {#dead_letter_topic=}, {#dead_letter_max_delivery_attempts=}, {#dead_letter_max_delivery_attempts}
|
384
|
+
# and {#remove_dead_letter_policy}.
|
375
385
|
#
|
376
386
|
# Makes an API call to retrieve the topic name when called on a reference object. See {#reference?}.
|
377
387
|
#
|
@@ -402,7 +412,11 @@ module Google
|
|
402
412
|
# The operation will fail if the topic does not exist. Users should ensure that there is a subscription attached
|
403
413
|
# to this topic since messages published to a topic with no subscriptions are lost.
|
404
414
|
#
|
405
|
-
#
|
415
|
+
# Makes an API call to retrieve the dead_letter_policy value when called on a
|
416
|
+
# reference object. See {#reference?}.
|
417
|
+
#
|
418
|
+
# See also {#dead_letter_topic}, {#dead_letter_max_delivery_attempts=}, {#dead_letter_max_delivery_attempts}
|
419
|
+
# and {#remove_dead_letter_policy}.
|
406
420
|
#
|
407
421
|
# @param [Topic] new_dead_letter_topic The topic to which dead letter messages for the subscription should be
|
408
422
|
# published.
|
@@ -434,14 +448,15 @@ module Google
|
|
434
448
|
# acknowledgement deadline has been exceeded for the message). A NACK is any call to ModifyAckDeadline with a 0
|
435
449
|
# deadline. Note that client libraries may automatically extend ack_deadlines.
|
436
450
|
#
|
437
|
-
# This field will be honored on a best effort basis. If this parameter is 0
|
451
|
+
# This field will be honored on a best effort basis. If this parameter is `nil` or `0`, a default value of `5`
|
452
|
+
# is used.
|
438
453
|
#
|
439
|
-
# See also {#dead_letter_max_delivery_attempts=}, {#dead_letter_topic=}
|
454
|
+
# See also {#dead_letter_max_delivery_attempts=}, {#dead_letter_topic=}, {#dead_letter_topic}
|
455
|
+
# and {#remove_dead_letter_policy}.
|
440
456
|
#
|
441
|
-
# Makes an API call to retrieve the
|
457
|
+
# Makes an API call to retrieve the dead_letter_policy when called on a reference object. See {#reference?}.
|
442
458
|
#
|
443
|
-
# @return [Integer, nil] A value between 5 and 100
|
444
|
-
# value is 0, a default value of 5 is used.
|
459
|
+
# @return [Integer, nil] A value between `5` and `100`, or `nil` if no dead letter policy is configured.
|
445
460
|
#
|
446
461
|
# @example
|
447
462
|
# require "google/cloud/pubsub"
|
@@ -468,10 +483,15 @@ module Google
|
|
468
483
|
#
|
469
484
|
# This field will be honored on a best effort basis. If this parameter is 0, a default value of 5 is used.
|
470
485
|
#
|
471
|
-
#
|
486
|
+
# Makes an API call to retrieve the dead_letter_policy when called on a reference object. See {#reference?}.
|
472
487
|
#
|
473
|
-
#
|
474
|
-
#
|
488
|
+
# The dead letter topic must be set first. See {#dead_letter_topic=}, {#dead_letter_topic} and
|
489
|
+
# {#remove_dead_letter_policy}.
|
490
|
+
#
|
491
|
+
# @param [Integer, nil] new_dead_letter_max_delivery_attempts A value between 5 and 100. If this parameter is
|
492
|
+
# `nil` or `0`, a default value of 5 is used.
|
493
|
+
#
|
494
|
+
# @raise [ArgumentError] if the dead letter topic has not been set. See {#dead_letter_topic=}.
|
475
495
|
#
|
476
496
|
# @example
|
477
497
|
# require "google/cloud/pubsub"
|
@@ -496,14 +516,48 @@ module Google
|
|
496
516
|
@resource_name = nil
|
497
517
|
end
|
498
518
|
|
519
|
+
##
|
520
|
+
# Removes an existing dead letter policy. A dead letter policy specifies the conditions for dead lettering
|
521
|
+
# messages in the subscription. If a dead letter policy is not set, dead lettering is disabled.
|
522
|
+
#
|
523
|
+
# Makes an API call to retrieve the dead_letter_policy when called on a reference object. See {#reference?}.
|
524
|
+
#
|
525
|
+
# See {#dead_letter_topic}, {#dead_letter_topic=}, {#dead_letter_max_delivery_attempts} and
|
526
|
+
# {#dead_letter_max_delivery_attempts=}.
|
527
|
+
#
|
528
|
+
# @return [Boolean] `true` if an existing dead letter policy was removed, `false` if no existing dead letter
|
529
|
+
# policy was present.
|
530
|
+
#
|
531
|
+
# @example
|
532
|
+
# require "google/cloud/pubsub"
|
533
|
+
#
|
534
|
+
# pubsub = Google::Cloud::PubSub.new
|
535
|
+
#
|
536
|
+
# sub = pubsub.subscription "my-topic-sub"
|
537
|
+
#
|
538
|
+
# sub.dead_letter_topic.name #=> "projects/my-project/topics/my-dead-letter-topic"
|
539
|
+
# sub.dead_letter_max_delivery_attempts #=> 10
|
540
|
+
#
|
541
|
+
# sub.remove_dead_letter_policy
|
542
|
+
#
|
543
|
+
# sub.dead_letter_topic #=> nil
|
544
|
+
# sub.dead_letter_max_delivery_attempts #=> nil
|
545
|
+
#
|
546
|
+
def remove_dead_letter_policy
|
547
|
+
ensure_grpc!
|
548
|
+
return false if @grpc.dead_letter_policy.nil?
|
549
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, dead_letter_policy: nil
|
550
|
+
@grpc = service.update_subscription update_grpc, :dead_letter_policy
|
551
|
+
true
|
552
|
+
end
|
553
|
+
|
499
554
|
##
|
500
555
|
# A policy that specifies how Cloud Pub/Sub retries message delivery for this subscription. If `nil`, the
|
501
556
|
# default retry policy is applied. This generally implies that messages will be retried as soon as possible
|
502
557
|
# for healthy subscribers. Retry Policy will be triggered on NACKs or acknowledgement deadline exceeded events
|
503
558
|
# for a given message.
|
504
559
|
#
|
505
|
-
#
|
506
|
-
# production use. It is not subject to any SLA or deprecation policy.
|
560
|
+
# Makes an API call to retrieve the retry_policy when called on a reference object. See {#reference?}.
|
507
561
|
#
|
508
562
|
# @return [RetryPolicy, nil] The retry policy for the subscription, or `nil`.
|
509
563
|
#
|
@@ -531,9 +585,6 @@ module Google
|
|
531
585
|
# for healthy subscribers. Retry Policy will be triggered on NACKs or acknowledgement deadline exceeded events
|
532
586
|
# for a given message.
|
533
587
|
#
|
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
588
|
# @param [RetryPolicy, nil] new_retry_policy A new retry policy for the subscription, or `nil`.
|
538
589
|
#
|
539
590
|
# @example
|
@@ -549,10 +600,11 @@ module Google
|
|
549
600
|
# sub.retry_policy.maximum_backoff #=> 300
|
550
601
|
#
|
551
602
|
def retry_policy= new_retry_policy
|
552
|
-
|
603
|
+
ensure_service!
|
553
604
|
new_retry_policy = new_retry_policy.to_grpc if new_retry_policy
|
554
605
|
update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, retry_policy: new_retry_policy
|
555
606
|
@grpc = service.update_subscription update_grpc, :retry_policy
|
607
|
+
@resource_name = nil
|
556
608
|
end
|
557
609
|
|
558
610
|
##
|
@@ -584,7 +636,7 @@ module Google
|
|
584
636
|
#
|
585
637
|
# See {Topic#subscribe} and {#detach}.
|
586
638
|
#
|
587
|
-
# Makes an API call to retrieve the value when called on a
|
639
|
+
# Makes an API call to retrieve the detached value when called on a
|
588
640
|
# reference object. See {#reference?}.
|
589
641
|
#
|
590
642
|
# @return [Boolean]
|
@@ -816,7 +868,8 @@ module Google
|
|
816
868
|
# @param [Integer] streams The number of concurrent streams to open to
|
817
869
|
# pull messages from the subscription. Default is 4. Optional.
|
818
870
|
# @param [Hash, Integer] inventory The settings to control how received messages are to be handled by the
|
819
|
-
# subscriber. When provided as an Integer instead of a Hash only
|
871
|
+
# subscriber. When provided as an Integer instead of a Hash only `max_outstanding_messages` will be set.
|
872
|
+
# Optional.
|
820
873
|
#
|
821
874
|
# Hash keys and values may include the following:
|
822
875
|
#
|
@@ -824,6 +877,9 @@ module Google
|
|
824
877
|
# Default is 1,000. (Note: replaces `:limit`, which is deprecated.)
|
825
878
|
# * `:max_outstanding_bytes` [Integer] The total byte size of received messages to be collected by
|
826
879
|
# subscriber. Default is 100,000,000 (100MB). (Note: replaces `:bytesize`, which is deprecated.)
|
880
|
+
# * `:use_legacy_flow_control` [Boolean] Disables enforcing flow control settings at the Cloud PubSub
|
881
|
+
# server and the less accurate method of only enforcing flow control at the client side is used instead.
|
882
|
+
# Default is false.
|
827
883
|
# * `:max_total_lease_duration` [Integer] The number of seconds that received messages can be held awaiting
|
828
884
|
# processing. Default is 3,600 (1 hour). (Note: replaces `:extension`, which is deprecated.)
|
829
885
|
# * `:max_duration_per_lease_extension` [Integer] The maximum amount of time in seconds for a single lease
|
@@ -856,6 +912,7 @@ module Google
|
|
856
912
|
#
|
857
913
|
# subscriber = sub.listen do |received_message|
|
858
914
|
# # process message
|
915
|
+
# puts "Data: #{received_message.message.data}, published at #{received_message.message.published_at}"
|
859
916
|
# received_message.acknowledge!
|
860
917
|
# end
|
861
918
|
#
|
@@ -863,7 +920,7 @@ module Google
|
|
863
920
|
# subscriber.start
|
864
921
|
#
|
865
922
|
# # Shut down the subscriber when ready to stop receiving messages.
|
866
|
-
# subscriber.stop
|
923
|
+
# subscriber.stop!
|
867
924
|
#
|
868
925
|
# @example Configuring to increase concurrent callbacks:
|
869
926
|
# require "google/cloud/pubsub"
|
@@ -882,7 +939,7 @@ module Google
|
|
882
939
|
# subscriber.start
|
883
940
|
#
|
884
941
|
# # Shut down the subscriber when ready to stop receiving messages.
|
885
|
-
# subscriber.stop
|
942
|
+
# subscriber.stop!
|
886
943
|
#
|
887
944
|
# @example Ordered messages are supported using ordering_key:
|
888
945
|
# require "google/cloud/pubsub"
|
@@ -902,7 +959,7 @@ module Google
|
|
902
959
|
# subscriber.start
|
903
960
|
#
|
904
961
|
# # Shut down the subscriber when ready to stop receiving messages.
|
905
|
-
# subscriber.stop
|
962
|
+
# subscriber.stop!
|
906
963
|
#
|
907
964
|
# @example Set the maximum amount of time before redelivery if the subscriber fails to extend the deadline:
|
908
965
|
# require "google/cloud/pubsub"
|
@@ -921,7 +978,7 @@ module Google
|
|
921
978
|
# subscriber.start
|
922
979
|
#
|
923
980
|
# # Shut down the subscriber when ready to stop receiving messages.
|
924
|
-
# subscriber.stop
|
981
|
+
# subscriber.stop!
|
925
982
|
#
|
926
983
|
def listen deadline: nil, message_ordering: nil, streams: nil, inventory: nil, threads: {}, &block
|
927
984
|
ensure_service!
|
@@ -22,7 +22,18 @@ module Google
|
|
22
22
|
##
|
23
23
|
# Configuration for a push delivery endpoint.
|
24
24
|
#
|
25
|
-
# @example
|
25
|
+
# @example Create a push config:
|
26
|
+
# require "google/cloud/pubsub"
|
27
|
+
#
|
28
|
+
# pubsub = Google::Cloud::PubSub.new
|
29
|
+
# topic = pubsub.topic "my-topic"
|
30
|
+
#
|
31
|
+
# push_config = Google::Cloud::PubSub::Subscription::PushConfig.new endpoint: "http://example.net/callback"
|
32
|
+
# push_config.set_oidc_token "service-account@example.net", "audience-header-value"
|
33
|
+
#
|
34
|
+
# sub = topic.subscribe "my-subscription", push_config: push_config
|
35
|
+
#
|
36
|
+
# @example Read a push config:
|
26
37
|
# require "google/cloud/pubsub"
|
27
38
|
#
|
28
39
|
# pubsub = Google::Cloud::PubSub.new
|
@@ -32,7 +43,7 @@ module Google
|
|
32
43
|
# sub.push_config.authentication.email #=> "user@example.com"
|
33
44
|
# sub.push_config.authentication.audience #=> "client-12345"
|
34
45
|
#
|
35
|
-
# @example Update
|
46
|
+
# @example Update a push config:
|
36
47
|
# require "google/cloud/pubsub"
|
37
48
|
#
|
38
49
|
# pubsub = Google::Cloud::PubSub.new
|
@@ -45,14 +56,31 @@ module Google
|
|
45
56
|
#
|
46
57
|
class PushConfig
|
47
58
|
##
|
48
|
-
#
|
49
|
-
|
59
|
+
# Creates a new push configuration.
|
60
|
+
#
|
61
|
+
# @param [String] endpoint A URL locating the endpoint to which messages should be pushed. For
|
62
|
+
# example, a Webhook endpoint might use `https://example.com/push`.
|
63
|
+
# @param [String] email The service account email to be used for generating the OIDC token.
|
64
|
+
# The caller must have the `iam.serviceAccounts.actAs` permission for the service account.
|
65
|
+
# @param [String] audience The audience to be used when generating OIDC token. The audience claim identifies
|
66
|
+
# the recipients that the JWT is intended for. The audience value is a single case-sensitive string. Having
|
67
|
+
# multiple values (array) for the audience field is not supported. More info about the OIDC JWT token
|
68
|
+
# audience here: https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the `endpoint`
|
69
|
+
# URL will be used.
|
70
|
+
#
|
71
|
+
def initialize endpoint: nil, email: nil, audience: nil
|
50
72
|
@grpc = Google::Cloud::PubSub::V1::PushConfig.new
|
73
|
+
|
74
|
+
self.endpoint = endpoint unless endpoint.nil?
|
75
|
+
|
76
|
+
raise ArgumentError, "audience provided without email. Authentication is invalid" if audience && !email
|
77
|
+
|
78
|
+
set_oidc_token email, audience if email
|
51
79
|
end
|
52
80
|
|
53
81
|
##
|
54
|
-
# A URL locating the endpoint to which messages should be pushed. For
|
55
|
-
#
|
82
|
+
# A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use
|
83
|
+
# `https://example.com/push`.
|
56
84
|
#
|
57
85
|
# @return [String]
|
58
86
|
def endpoint
|
@@ -60,9 +88,8 @@ module Google
|
|
60
88
|
end
|
61
89
|
|
62
90
|
##
|
63
|
-
# Sets the URL locating the endpoint to which messages should be
|
64
|
-
#
|
65
|
-
# `https://example.com/push`.
|
91
|
+
# Sets the URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might
|
92
|
+
# use `https://example.com/push`.
|
66
93
|
#
|
67
94
|
# @param [String, nil] new_endpoint New URL value
|
68
95
|
def endpoint= new_endpoint
|
@@ -70,8 +97,7 @@ module Google
|
|
70
97
|
end
|
71
98
|
|
72
99
|
##
|
73
|
-
# The authentication method used by push endpoints to verify the
|
74
|
-
# source of push requests.
|
100
|
+
# The authentication method used by push endpoints to verify the source of push requests.
|
75
101
|
#
|
76
102
|
# @return [OidcToken, nil] An OIDC JWT token if specified, `nil`
|
77
103
|
# otherwise.
|
@@ -82,8 +108,7 @@ module Google
|
|
82
108
|
end
|
83
109
|
|
84
110
|
##
|
85
|
-
# Sets the authentication method used by push endpoints to verify the
|
86
|
-
# source of push requests.
|
111
|
+
# Sets the authentication method used by push endpoints to verify the source of push requests.
|
87
112
|
#
|
88
113
|
# @param [OidcToken, nil] new_auth An authentication value.
|
89
114
|
def authentication= new_auth
|
@@ -118,13 +143,12 @@ module Google
|
|
118
143
|
end
|
119
144
|
|
120
145
|
##
|
121
|
-
# The format of the pushed message. This attribute indicates the
|
122
|
-
#
|
123
|
-
#
|
124
|
-
# endpoint version is based on the version of the Pub/Sub API.
|
146
|
+
# The format of the pushed message. This attribute indicates the version of the data expected by the endpoint.
|
147
|
+
# This controls the shape of the pushed message (i.e., its fields and metadata). The endpoint version is based
|
148
|
+
# on the version of the Pub/Sub API.
|
125
149
|
#
|
126
|
-
# If not present during the Subscription creation, it will default to
|
127
|
-
#
|
150
|
+
# If not present during the Subscription creation, it will default to the version of the API used to make such
|
151
|
+
# call.
|
128
152
|
#
|
129
153
|
# The possible values for this attribute are:
|
130
154
|
#
|
@@ -182,7 +206,8 @@ module Google
|
|
182
206
|
end
|
183
207
|
|
184
208
|
##
|
185
|
-
#
|
209
|
+
# The service account email to be used for generating the OIDC token. The caller must have the
|
210
|
+
# `iam.serviceAccounts.actAs` permission for the service account.
|
186
211
|
#
|
187
212
|
# @return [String]
|
188
213
|
def email
|
@@ -190,7 +215,8 @@ module Google
|
|
190
215
|
end
|
191
216
|
|
192
217
|
##
|
193
|
-
#
|
218
|
+
# Sets the service account email to be used for generating the OIDC token. The caller must have the
|
219
|
+
# `iam.serviceAccounts.actAs` permission for the service account.
|
194
220
|
#
|
195
221
|
# @param [String] new_email New service account email value.
|
196
222
|
def email= new_email
|
@@ -198,15 +224,10 @@ module Google
|
|
198
224
|
end
|
199
225
|
|
200
226
|
##
|
201
|
-
#
|
202
|
-
#
|
203
|
-
# audience
|
204
|
-
#
|
205
|
-
# Having multiple values (array) for the audience field is not
|
206
|
-
# supported.
|
207
|
-
#
|
208
|
-
# More info about the OIDC JWT token audience here:
|
209
|
-
# https://tools.ietf.org/html/rfc7519#section-4.1.3
|
227
|
+
# The audience to be used when generating OIDC token. The audience claim identifies the recipients that
|
228
|
+
# the JWT is intended for. The audience value is a single case-sensitive string. Having multiple values
|
229
|
+
# (array) for the audience field is not supported. More info about the OIDC JWT token audience here:
|
230
|
+
# https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the `endpoint` URL will be used.
|
210
231
|
#
|
211
232
|
# @return [String]
|
212
233
|
def audience
|
@@ -214,7 +235,10 @@ module Google
|
|
214
235
|
end
|
215
236
|
|
216
237
|
##
|
217
|
-
# Sets the audience to be used when generating OIDC token.
|
238
|
+
# Sets the audience to be used when generating OIDC token. The audience claim identifies the recipients that
|
239
|
+
# the JWT is intended for. The audience value is a single case-sensitive string. Having multiple values
|
240
|
+
# (array) for the audience field is not supported. More info about the OIDC JWT token audience here:
|
241
|
+
# https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the `endpoint` URL will be used.
|
218
242
|
#
|
219
243
|
# @param [String] new_audience New audience value.
|
220
244
|
def audience= new_audience
|
@@ -78,7 +78,7 @@ module Google
|
|
78
78
|
# end
|
79
79
|
# end
|
80
80
|
#
|
81
|
-
# topic.async_publisher.stop
|
81
|
+
# topic.async_publisher.stop!
|
82
82
|
#
|
83
83
|
def async_publisher
|
84
84
|
@async_publisher
|
@@ -275,7 +275,10 @@ module Google
|
|
275
275
|
# 604,800 seconds (7 days) or less than 600 seconds (10 minutes).
|
276
276
|
# Default is 604,800 seconds (7 days).
|
277
277
|
# @param [String] endpoint A URL locating the endpoint to which messages
|
278
|
-
# should be pushed.
|
278
|
+
# should be pushed. The parameters `push_config` and `endpoint` should not both be provided.
|
279
|
+
# @param [Google::Cloud::PubSub::Subscription::PushConfig] push_config The configuration for a push delivery
|
280
|
+
# endpoint that should contain the endpoint, and can contain authentication data (OIDC token authentication).
|
281
|
+
# The parameters `push_config` and `endpoint` should not both be provided.
|
279
282
|
# @param [Hash] labels A hash of user-provided labels associated with
|
280
283
|
# the subscription. You can use these to organize and group your
|
281
284
|
# subscriptions. Label keys and values can be no longer than 63
|
@@ -306,9 +309,6 @@ module Google
|
|
306
309
|
# will be retried as soon as possible for healthy subscribers. Retry Policy will be triggered on NACKs or
|
307
310
|
# acknowledgement deadline exceeded events for a given message.
|
308
311
|
#
|
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.
|
311
|
-
#
|
312
312
|
# @return [Google::Cloud::PubSub::Subscription]
|
313
313
|
#
|
314
314
|
# @example
|
@@ -320,15 +320,25 @@ module Google
|
|
320
320
|
# sub = topic.subscribe "my-topic-sub"
|
321
321
|
# sub.name # => "my-topic-sub"
|
322
322
|
#
|
323
|
-
# @example Wait 2 minutes for acknowledgement
|
323
|
+
# @example Wait 2 minutes for acknowledgement:
|
324
324
|
# require "google/cloud/pubsub"
|
325
325
|
#
|
326
326
|
# pubsub = Google::Cloud::PubSub.new
|
327
327
|
#
|
328
328
|
# topic = pubsub.topic "my-topic"
|
329
329
|
# sub = topic.subscribe "my-topic-sub",
|
330
|
-
# deadline: 120
|
331
|
-
#
|
330
|
+
# deadline: 120
|
331
|
+
#
|
332
|
+
# @example Configure a push endpoint:
|
333
|
+
# require "google/cloud/pubsub"
|
334
|
+
#
|
335
|
+
# pubsub = Google::Cloud::PubSub.new
|
336
|
+
# topic = pubsub.topic "my-topic"
|
337
|
+
#
|
338
|
+
# push_config = Google::Cloud::PubSub::Subscription::PushConfig.new endpoint: "http://example.net/callback"
|
339
|
+
# push_config.set_oidc_token "service-account@example.net", "audience-header-value"
|
340
|
+
#
|
341
|
+
# sub = topic.subscribe "my-subscription", push_config: push_config
|
332
342
|
#
|
333
343
|
# @example Configure a Dead Letter Queues policy:
|
334
344
|
# require "google/cloud/pubsub"
|
@@ -361,19 +371,40 @@ module Google
|
|
361
371
|
# retry_policy = Google::Cloud::PubSub::RetryPolicy.new minimum_backoff: 5, maximum_backoff: 300
|
362
372
|
# sub = topic.subscribe "my-topic-sub", retry_policy: retry_policy
|
363
373
|
#
|
364
|
-
def subscribe subscription_name,
|
365
|
-
|
366
|
-
|
374
|
+
def subscribe subscription_name,
|
375
|
+
deadline: nil,
|
376
|
+
retain_acked: false,
|
377
|
+
retention: nil,
|
378
|
+
endpoint: nil,
|
379
|
+
push_config: nil,
|
380
|
+
labels: nil,
|
381
|
+
message_ordering: nil,
|
382
|
+
filter: nil,
|
383
|
+
dead_letter_topic: nil,
|
384
|
+
dead_letter_max_delivery_attempts: nil,
|
385
|
+
retry_policy: nil
|
367
386
|
ensure_service!
|
368
|
-
|
369
|
-
|
370
|
-
|
387
|
+
if push_config && endpoint
|
388
|
+
raise ArgumentError, "endpoint and push_config were both provided. Please provide only one."
|
389
|
+
end
|
390
|
+
push_config = Google::Cloud::PubSub::Subscription::PushConfig.new endpoint: endpoint if endpoint
|
391
|
+
|
392
|
+
options = {
|
393
|
+
deadline: deadline,
|
394
|
+
retain_acked: retain_acked,
|
395
|
+
retention: retention,
|
396
|
+
labels: labels,
|
397
|
+
message_ordering: message_ordering,
|
398
|
+
filter: filter,
|
399
|
+
dead_letter_max_delivery_attempts: dead_letter_max_delivery_attempts
|
400
|
+
}
|
371
401
|
|
372
402
|
options[:dead_letter_topic_name] = dead_letter_topic.name if dead_letter_topic
|
373
403
|
if options[:dead_letter_max_delivery_attempts] && !options[:dead_letter_topic_name]
|
374
404
|
# Service error message "3:Invalid resource name given (name=)." does not identify param.
|
375
405
|
raise ArgumentError, "dead_letter_topic is required with dead_letter_max_delivery_attempts"
|
376
406
|
end
|
407
|
+
options[:push_config] = push_config.to_grpc if push_config
|
377
408
|
options[:retry_policy] = retry_policy.to_grpc if retry_policy
|
378
409
|
grpc = service.create_subscription name, subscription_name, options
|
379
410
|
Subscription.from_grpc grpc, service
|
@@ -590,7 +621,7 @@ module Google
|
|
590
621
|
# end
|
591
622
|
#
|
592
623
|
# # Shut down the publisher when ready to stop publishing messages.
|
593
|
-
# topic.async_publisher.stop
|
624
|
+
# topic.async_publisher.stop!
|
594
625
|
#
|
595
626
|
# @example A message can be published using a File object:
|
596
627
|
# require "google/cloud/pubsub"
|
@@ -602,7 +633,7 @@ module Google
|
|
602
633
|
# topic.publish_async file
|
603
634
|
#
|
604
635
|
# # Shut down the publisher when ready to stop publishing messages.
|
605
|
-
# topic.async_publisher.stop
|
636
|
+
# topic.async_publisher.stop!
|
606
637
|
#
|
607
638
|
# @example Additionally, a message can be published with attributes:
|
608
639
|
# require "google/cloud/pubsub"
|
@@ -614,7 +645,7 @@ module Google
|
|
614
645
|
# foo: :bar, this: :that
|
615
646
|
#
|
616
647
|
# # Shut down the publisher when ready to stop publishing messages.
|
617
|
-
# topic.async_publisher.stop
|
648
|
+
# topic.async_publisher.stop!
|
618
649
|
#
|
619
650
|
# @example Ordered messages are supported using ordering_key:
|
620
651
|
# require "google/cloud/pubsub"
|
@@ -631,7 +662,7 @@ module Google
|
|
631
662
|
# ordering_key: "task-key"
|
632
663
|
#
|
633
664
|
# # Shut down the publisher when ready to stop publishing messages.
|
634
|
-
# topic.async_publisher.stop
|
665
|
+
# topic.async_publisher.stop!
|
635
666
|
#
|
636
667
|
def publish_async data = nil, attributes = nil, ordering_key: nil, **extra_attrs, &callback
|
637
668
|
ensure_service!
|
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: 2.
|
4
|
+
version: 2.3.1
|
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:
|
12
|
+
date: 2021-01-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: concurrent-ruby
|
@@ -259,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
259
259
|
- !ruby/object:Gem::Version
|
260
260
|
version: '0'
|
261
261
|
requirements: []
|
262
|
-
rubygems_version: 3.1.
|
262
|
+
rubygems_version: 3.1.4
|
263
263
|
signing_key:
|
264
264
|
specification_version: 4
|
265
265
|
summary: API Client library for Google Cloud Pub/Sub
|