google-cloud-pubsub 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- 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/service.rb +1 -6
- data/lib/google/cloud/pubsub/subscriber.rb +3 -3
- data/lib/google/cloud/pubsub/subscription.rb +16 -8
- data/lib/google/cloud/pubsub/subscription/push_config.rb +55 -31
- data/lib/google/cloud/pubsub/topic.rb +49 -15
- 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: 78dd56b9b8fa38d07a2d712afbf6b2d32f20ab11c292018ca15e23c838102e31
|
4
|
+
data.tar.gz: e60a9d91b0f0ac99ac8207f3cbfa14d10f48f3fa831461494c3ca05dda804bc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 823ff96d9886348199ce5e46335e8bd17f8f0fb316fde14336d9c464c49c13978daab8bd6b15e84c44422d3494b877207535bbc6b15f57c5caff1fb7d4c9f7f0
|
7
|
+
data.tar.gz: 04cbd6adba655294efefc38bbf18c48bada0ad7c7f61ab482c8fb9c460115e5a2acf1a936a3e20e39cdac83de004fb404f23032f5a1cc29d2ac9b85d94d6528d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 2.1.0 / 2020-09-17
|
4
|
+
|
5
|
+
#### Features
|
6
|
+
|
7
|
+
* quota_project can be set via library configuration ([#7630](https://www.github.com/googleapis/google-cloud-ruby/issues/7630))
|
8
|
+
* Add push_config (PushConfig) param to Topic#subscribe
|
9
|
+
* Make PushConfig constructor public.
|
10
|
+
|
11
|
+
#### Documentation
|
12
|
+
|
13
|
+
* Update sample code for on_error, at_exit, and concurrency tuning
|
14
|
+
|
3
15
|
### 2.0.0 / 2020-08-06
|
4
16
|
|
5
17
|
This is a major update that removes the "low-level" client interface code, and
|
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
|
@@ -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 }
|
@@ -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.
|
@@ -856,6 +863,7 @@ module Google
|
|
856
863
|
#
|
857
864
|
# subscriber = sub.listen do |received_message|
|
858
865
|
# # process message
|
866
|
+
# puts "Data: #{received_message.message.data}, published at #{received_message.message.published_at}"
|
859
867
|
# received_message.acknowledge!
|
860
868
|
# end
|
861
869
|
#
|
@@ -863,7 +871,7 @@ module Google
|
|
863
871
|
# subscriber.start
|
864
872
|
#
|
865
873
|
# # Shut down the subscriber when ready to stop receiving messages.
|
866
|
-
# subscriber.stop
|
874
|
+
# subscriber.stop!
|
867
875
|
#
|
868
876
|
# @example Configuring to increase concurrent callbacks:
|
869
877
|
# require "google/cloud/pubsub"
|
@@ -882,7 +890,7 @@ module Google
|
|
882
890
|
# subscriber.start
|
883
891
|
#
|
884
892
|
# # Shut down the subscriber when ready to stop receiving messages.
|
885
|
-
# subscriber.stop
|
893
|
+
# subscriber.stop!
|
886
894
|
#
|
887
895
|
# @example Ordered messages are supported using ordering_key:
|
888
896
|
# require "google/cloud/pubsub"
|
@@ -902,7 +910,7 @@ module Google
|
|
902
910
|
# subscriber.start
|
903
911
|
#
|
904
912
|
# # Shut down the subscriber when ready to stop receiving messages.
|
905
|
-
# subscriber.stop
|
913
|
+
# subscriber.stop!
|
906
914
|
#
|
907
915
|
# @example Set the maximum amount of time before redelivery if the subscriber fails to extend the deadline:
|
908
916
|
# require "google/cloud/pubsub"
|
@@ -921,7 +929,7 @@ module Google
|
|
921
929
|
# subscriber.start
|
922
930
|
#
|
923
931
|
# # Shut down the subscriber when ready to stop receiving messages.
|
924
|
-
# subscriber.stop
|
932
|
+
# subscriber.stop!
|
925
933
|
#
|
926
934
|
def listen deadline: nil, message_ordering: nil, streams: nil, inventory: nil, threads: {}, &block
|
927
935
|
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
|
@@ -320,15 +323,25 @@ module Google
|
|
320
323
|
# sub = topic.subscribe "my-topic-sub"
|
321
324
|
# sub.name # => "my-topic-sub"
|
322
325
|
#
|
323
|
-
# @example Wait 2 minutes for acknowledgement
|
326
|
+
# @example Wait 2 minutes for acknowledgement:
|
324
327
|
# require "google/cloud/pubsub"
|
325
328
|
#
|
326
329
|
# pubsub = Google::Cloud::PubSub.new
|
327
330
|
#
|
328
331
|
# topic = pubsub.topic "my-topic"
|
329
332
|
# sub = topic.subscribe "my-topic-sub",
|
330
|
-
# deadline: 120
|
331
|
-
#
|
333
|
+
# deadline: 120
|
334
|
+
#
|
335
|
+
# @example Configure a push endpoint:
|
336
|
+
# require "google/cloud/pubsub"
|
337
|
+
#
|
338
|
+
# pubsub = Google::Cloud::PubSub.new
|
339
|
+
# topic = pubsub.topic "my-topic"
|
340
|
+
#
|
341
|
+
# push_config = Google::Cloud::PubSub::Subscription::PushConfig.new endpoint: "http://example.net/callback"
|
342
|
+
# push_config.set_oidc_token "service-account@example.net", "audience-header-value"
|
343
|
+
#
|
344
|
+
# sub = topic.subscribe "my-subscription", push_config: push_config
|
332
345
|
#
|
333
346
|
# @example Configure a Dead Letter Queues policy:
|
334
347
|
# require "google/cloud/pubsub"
|
@@ -361,19 +374,40 @@ module Google
|
|
361
374
|
# retry_policy = Google::Cloud::PubSub::RetryPolicy.new minimum_backoff: 5, maximum_backoff: 300
|
362
375
|
# sub = topic.subscribe "my-topic-sub", retry_policy: retry_policy
|
363
376
|
#
|
364
|
-
def subscribe subscription_name,
|
365
|
-
|
366
|
-
|
377
|
+
def subscribe subscription_name,
|
378
|
+
deadline: nil,
|
379
|
+
retain_acked: false,
|
380
|
+
retention: nil,
|
381
|
+
endpoint: nil,
|
382
|
+
push_config: nil,
|
383
|
+
labels: nil,
|
384
|
+
message_ordering: nil,
|
385
|
+
filter: nil,
|
386
|
+
dead_letter_topic: nil,
|
387
|
+
dead_letter_max_delivery_attempts: nil,
|
388
|
+
retry_policy: nil
|
367
389
|
ensure_service!
|
368
|
-
|
369
|
-
|
370
|
-
|
390
|
+
if push_config && endpoint
|
391
|
+
raise ArgumentError, "endpoint and push_config were both provided. Please provide only one."
|
392
|
+
end
|
393
|
+
push_config = Google::Cloud::PubSub::Subscription::PushConfig.new endpoint: endpoint if endpoint
|
394
|
+
|
395
|
+
options = {
|
396
|
+
deadline: deadline,
|
397
|
+
retain_acked: retain_acked,
|
398
|
+
retention: retention,
|
399
|
+
labels: labels,
|
400
|
+
message_ordering: message_ordering,
|
401
|
+
filter: filter,
|
402
|
+
dead_letter_max_delivery_attempts: dead_letter_max_delivery_attempts
|
403
|
+
}
|
371
404
|
|
372
405
|
options[:dead_letter_topic_name] = dead_letter_topic.name if dead_letter_topic
|
373
406
|
if options[:dead_letter_max_delivery_attempts] && !options[:dead_letter_topic_name]
|
374
407
|
# Service error message "3:Invalid resource name given (name=)." does not identify param.
|
375
408
|
raise ArgumentError, "dead_letter_topic is required with dead_letter_max_delivery_attempts"
|
376
409
|
end
|
410
|
+
options[:push_config] = push_config.to_grpc if push_config
|
377
411
|
options[:retry_policy] = retry_policy.to_grpc if retry_policy
|
378
412
|
grpc = service.create_subscription name, subscription_name, options
|
379
413
|
Subscription.from_grpc grpc, service
|
@@ -590,7 +624,7 @@ module Google
|
|
590
624
|
# end
|
591
625
|
#
|
592
626
|
# # Shut down the publisher when ready to stop publishing messages.
|
593
|
-
# topic.async_publisher.stop
|
627
|
+
# topic.async_publisher.stop!
|
594
628
|
#
|
595
629
|
# @example A message can be published using a File object:
|
596
630
|
# require "google/cloud/pubsub"
|
@@ -602,7 +636,7 @@ module Google
|
|
602
636
|
# topic.publish_async file
|
603
637
|
#
|
604
638
|
# # Shut down the publisher when ready to stop publishing messages.
|
605
|
-
# topic.async_publisher.stop
|
639
|
+
# topic.async_publisher.stop!
|
606
640
|
#
|
607
641
|
# @example Additionally, a message can be published with attributes:
|
608
642
|
# require "google/cloud/pubsub"
|
@@ -614,7 +648,7 @@ module Google
|
|
614
648
|
# foo: :bar, this: :that
|
615
649
|
#
|
616
650
|
# # Shut down the publisher when ready to stop publishing messages.
|
617
|
-
# topic.async_publisher.stop
|
651
|
+
# topic.async_publisher.stop!
|
618
652
|
#
|
619
653
|
# @example Ordered messages are supported using ordering_key:
|
620
654
|
# require "google/cloud/pubsub"
|
@@ -631,7 +665,7 @@ module Google
|
|
631
665
|
# ordering_key: "task-key"
|
632
666
|
#
|
633
667
|
# # Shut down the publisher when ready to stop publishing messages.
|
634
|
-
# topic.async_publisher.stop
|
668
|
+
# topic.async_publisher.stop!
|
635
669
|
#
|
636
670
|
def publish_async data = nil, attributes = nil, ordering_key: nil, **extra_attrs, &callback
|
637
671
|
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.1.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-09-17 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
|