google-cloud-pubsub 2.3.2 → 2.7.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 +55 -0
- data/CONTRIBUTING.md +3 -4
- data/LOGGING.md +1 -1
- data/OVERVIEW.md +9 -6
- data/lib/google/cloud/pubsub.rb +0 -4
- data/lib/google/cloud/pubsub/async_publisher.rb +49 -9
- data/lib/google/cloud/pubsub/async_publisher/batch.rb +4 -7
- data/lib/google/cloud/pubsub/batch_publisher.rb +31 -30
- data/lib/google/cloud/pubsub/credentials.rb +1 -1
- data/lib/google/cloud/pubsub/errors.rb +8 -0
- data/lib/google/cloud/pubsub/flow_controller.rb +139 -0
- data/lib/google/cloud/pubsub/policy.rb +3 -2
- data/lib/google/cloud/pubsub/project.rb +248 -11
- data/lib/google/cloud/pubsub/retry_policy.rb +2 -1
- data/lib/google/cloud/pubsub/schema.rb +310 -0
- data/lib/google/cloud/pubsub/schema/list.rb +180 -0
- data/lib/google/cloud/pubsub/service.rb +147 -32
- data/lib/google/cloud/pubsub/snapshot.rb +1 -0
- data/lib/google/cloud/pubsub/snapshot/list.rb +2 -2
- data/lib/google/cloud/pubsub/subscriber.rb +29 -24
- data/lib/google/cloud/pubsub/subscriber/inventory.rb +6 -2
- data/lib/google/cloud/pubsub/subscriber/stream.rb +1 -1
- data/lib/google/cloud/pubsub/subscriber/timed_unary_buffer.rb +6 -7
- data/lib/google/cloud/pubsub/subscription.rb +27 -25
- data/lib/google/cloud/pubsub/subscription/list.rb +2 -2
- data/lib/google/cloud/pubsub/topic.rb +107 -7
- data/lib/google/cloud/pubsub/topic/list.rb +2 -2
- data/lib/google/cloud/pubsub/version.rb +1 -1
- metadata +23 -6
@@ -130,12 +130,12 @@ module Google
|
|
130
130
|
# puts subscription.name
|
131
131
|
# end
|
132
132
|
#
|
133
|
-
def all request_limit: nil
|
133
|
+
def all request_limit: nil, &block
|
134
134
|
request_limit = request_limit.to_i if request_limit
|
135
135
|
return enum_for :all, request_limit: request_limit unless block_given?
|
136
136
|
results = self
|
137
137
|
loop do
|
138
|
-
results.each
|
138
|
+
results.each(&block)
|
139
139
|
if request_limit
|
140
140
|
request_limit -= 1
|
141
141
|
break if request_limit.negative?
|
@@ -233,6 +233,78 @@ module Google
|
|
233
233
|
@resource_name = nil
|
234
234
|
end
|
235
235
|
|
236
|
+
##
|
237
|
+
# The name of the schema that messages published should be validated against, if schema settings are configured
|
238
|
+
# for the topic. The value is a fully-qualified schema name in the form
|
239
|
+
# `projects/{project_id}/schemas/{schema_id}`. If present, {#message_encoding} should also be present. The value
|
240
|
+
# of this field will be `_deleted-schema_` if the schema has been deleted.
|
241
|
+
#
|
242
|
+
# Makes an API call to retrieve the schema settings when called on a reference object. See {#reference?}.
|
243
|
+
#
|
244
|
+
# @return [String, nil] The schema name, or `nil` if schema settings are not configured for the topic.
|
245
|
+
#
|
246
|
+
# @example
|
247
|
+
# require "google/cloud/pubsub"
|
248
|
+
#
|
249
|
+
# pubsub = Google::Cloud::PubSub.new
|
250
|
+
#
|
251
|
+
# topic = pubsub.topic "my-topic"
|
252
|
+
#
|
253
|
+
# topic.schema_name #=> "projects/my-project/schemas/my-schema"
|
254
|
+
#
|
255
|
+
def schema_name
|
256
|
+
ensure_grpc!
|
257
|
+
@grpc.schema_settings&.schema
|
258
|
+
end
|
259
|
+
|
260
|
+
##
|
261
|
+
# The encoding of messages validated against the schema identified by {#schema_name}. If present, {#schema_name}
|
262
|
+
# should also be present. Values include:
|
263
|
+
#
|
264
|
+
# * `JSON` - JSON encoding.
|
265
|
+
# * `BINARY` - Binary encoding, as defined by the schema type. For some schema types, binary encoding may not be
|
266
|
+
# available.
|
267
|
+
#
|
268
|
+
# Makes an API call to retrieve the schema settings when called on a reference object. See {#reference?}.
|
269
|
+
#
|
270
|
+
# @return [Symbol, nil] The schema encoding, or `nil` if schema settings are not configured for the topic.
|
271
|
+
#
|
272
|
+
# @example
|
273
|
+
# require "google/cloud/pubsub"
|
274
|
+
#
|
275
|
+
# pubsub = Google::Cloud::PubSub.new
|
276
|
+
#
|
277
|
+
# topic = pubsub.topic "my-topic"
|
278
|
+
#
|
279
|
+
# topic.message_encoding #=> :JSON
|
280
|
+
#
|
281
|
+
def message_encoding
|
282
|
+
ensure_grpc!
|
283
|
+
@grpc.schema_settings&.encoding
|
284
|
+
end
|
285
|
+
|
286
|
+
##
|
287
|
+
# Checks if the encoding of messages in the schema settings is `BINARY`. See {#message_encoding}.
|
288
|
+
#
|
289
|
+
# Makes an API call to retrieve the schema settings when called on a reference object. See {#reference?}.
|
290
|
+
#
|
291
|
+
# @return [Boolean] `true` when `BINARY`, `false` if not `BINARY` or schema settings is not set.
|
292
|
+
#
|
293
|
+
def message_encoding_binary?
|
294
|
+
message_encoding.to_s.upcase == "BINARY"
|
295
|
+
end
|
296
|
+
|
297
|
+
##
|
298
|
+
# Checks if the encoding of messages in the schema settings is `JSON`. See {#message_encoding}.
|
299
|
+
#
|
300
|
+
# Makes an API call to retrieve the schema settings when called on a reference object. See {#reference?}.
|
301
|
+
#
|
302
|
+
# @return [Boolean] `true` when `JSON`, `false` if not `JSON` or schema settings is not set.
|
303
|
+
#
|
304
|
+
def message_encoding_json?
|
305
|
+
message_encoding.to_s.upcase == "JSON"
|
306
|
+
end
|
307
|
+
|
236
308
|
##
|
237
309
|
# Permanently deletes the topic.
|
238
310
|
#
|
@@ -516,6 +588,8 @@ module Google
|
|
516
588
|
# @param [String, File] data The message payload. This will be converted
|
517
589
|
# to bytes encoded as ASCII-8BIT.
|
518
590
|
# @param [Hash] attributes Optional attributes for the message.
|
591
|
+
# @param [String] ordering_key Identifies related messages for which
|
592
|
+
# publish order should be respected.
|
519
593
|
# @yield [batch] a block for publishing multiple messages in one
|
520
594
|
# request
|
521
595
|
# @yieldparam [BatchPublisher] batch the topic batch publisher
|
@@ -564,10 +638,24 @@ module Google
|
|
564
638
|
# t.publish "task 3 completed", foo: :bif
|
565
639
|
# end
|
566
640
|
#
|
567
|
-
|
641
|
+
# @example Ordered messages are supported using ordering_key:
|
642
|
+
# require "google/cloud/pubsub"
|
643
|
+
#
|
644
|
+
# pubsub = Google::Cloud::PubSub.new
|
645
|
+
#
|
646
|
+
# topic = pubsub.topic "my-ordered-topic"
|
647
|
+
#
|
648
|
+
# # Ensure that message ordering is enabled.
|
649
|
+
# topic.enable_message_ordering!
|
650
|
+
#
|
651
|
+
# # Publish an ordered message with an ordering key.
|
652
|
+
# topic.publish "task completed",
|
653
|
+
# ordering_key: "task-key"
|
654
|
+
#
|
655
|
+
def publish data = nil, attributes = nil, ordering_key: nil, **extra_attrs, &block
|
568
656
|
ensure_service!
|
569
|
-
batch = BatchPublisher.new data, attributes
|
570
|
-
|
657
|
+
batch = BatchPublisher.new data, attributes, ordering_key, extra_attrs
|
658
|
+
block&.call batch
|
571
659
|
return nil if batch.messages.count.zero?
|
572
660
|
publish_batch_messages batch
|
573
661
|
end
|
@@ -596,6 +684,11 @@ module Google
|
|
596
684
|
# @note At the time of this release, ordering keys are not yet publicly
|
597
685
|
# enabled and requires special project enablements.
|
598
686
|
#
|
687
|
+
# Publisher flow control limits the number of outstanding messages that
|
688
|
+
# are allowed to wait to be published. See the `flow_control` key in the
|
689
|
+
# `async` parameter in {Project#topic} for more information about publisher
|
690
|
+
# flow control settings.
|
691
|
+
#
|
599
692
|
# @param [String, File] data The message payload. This will be converted
|
600
693
|
# to bytes encoded as ASCII-8BIT.
|
601
694
|
# @param [Hash] attributes Optional attributes for the message.
|
@@ -615,6 +708,13 @@ module Google
|
|
615
708
|
# message with an `ordering_key` that has already failed when
|
616
709
|
# publishing. Use {#resume_publish} to allow this `ordering_key` to be
|
617
710
|
# published again.
|
711
|
+
# @raise [Google::Cloud::PubSub::FlowControlLimitError] when publish flow
|
712
|
+
# control limits are exceeded, and the `async` parameter key
|
713
|
+
# `flow_control.limit_exceeded_behavior` is set to `:error` or `:block`.
|
714
|
+
# If `flow_control.limit_exceeded_behavior` is set to `:block`, this error
|
715
|
+
# will be raised only when a limit would be exceeded by a single message.
|
716
|
+
# See the `async` parameter in {Project#topic} for more information about
|
717
|
+
# `flow_control` settings.
|
618
718
|
#
|
619
719
|
# @example
|
620
720
|
# require "google/cloud/pubsub"
|
@@ -677,7 +777,7 @@ module Google
|
|
677
777
|
def publish_async data = nil, attributes = nil, ordering_key: nil, **extra_attrs, &callback
|
678
778
|
ensure_service!
|
679
779
|
|
680
|
-
@async_publisher ||= AsyncPublisher.new name, service,
|
780
|
+
@async_publisher ||= AsyncPublisher.new name, service, **@async_opts
|
681
781
|
@async_publisher.publish data, attributes, ordering_key: ordering_key, **extra_attrs, &callback
|
682
782
|
end
|
683
783
|
|
@@ -693,7 +793,7 @@ module Google
|
|
693
793
|
# {Subscription#listen}, and {Message#ordering_key}.
|
694
794
|
#
|
695
795
|
def enable_message_ordering!
|
696
|
-
@async_publisher ||= AsyncPublisher.new name, service,
|
796
|
+
@async_publisher ||= AsyncPublisher.new name, service, **@async_opts
|
697
797
|
@async_publisher.enable_message_ordering!
|
698
798
|
end
|
699
799
|
|
@@ -709,7 +809,7 @@ module Google
|
|
709
809
|
# @return [Boolean]
|
710
810
|
#
|
711
811
|
def message_ordering?
|
712
|
-
@async_publisher ||= AsyncPublisher.new name, service,
|
812
|
+
@async_publisher ||= AsyncPublisher.new name, service, **@async_opts
|
713
813
|
@async_publisher.message_ordering?
|
714
814
|
end
|
715
815
|
|
@@ -722,7 +822,7 @@ module Google
|
|
722
822
|
# @return [boolean] `true` when resumed, `false` otherwise.
|
723
823
|
#
|
724
824
|
def resume_publish ordering_key
|
725
|
-
@async_publisher ||= AsyncPublisher.new name, service,
|
825
|
+
@async_publisher ||= AsyncPublisher.new name, service, **@async_opts
|
726
826
|
@async_publisher.resume_publish ordering_key
|
727
827
|
end
|
728
828
|
|
@@ -124,12 +124,12 @@ module Google
|
|
124
124
|
# puts topic.name
|
125
125
|
# end
|
126
126
|
#
|
127
|
-
def all request_limit: nil
|
127
|
+
def all request_limit: nil, &block
|
128
128
|
request_limit = request_limit.to_i if request_limit
|
129
129
|
return enum_for :all, request_limit: request_limit unless block_given?
|
130
130
|
results = self
|
131
131
|
loop do
|
132
|
-
results.each
|
132
|
+
results.each(&block)
|
133
133
|
if request_limit
|
134
134
|
request_limit -= 1
|
135
135
|
break if request_limit.negative?
|
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.7.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: 2021-
|
12
|
+
date: 2021-06-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: concurrent-ruby
|
@@ -67,20 +67,34 @@ dependencies:
|
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '1.1'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: avro
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '1.10'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '1.10'
|
70
84
|
- !ruby/object:Gem::Dependency
|
71
85
|
name: google-style
|
72
86
|
requirement: !ruby/object:Gem::Requirement
|
73
87
|
requirements:
|
74
88
|
- - "~>"
|
75
89
|
- !ruby/object:Gem::Version
|
76
|
-
version: 1.
|
90
|
+
version: 1.25.1
|
77
91
|
type: :development
|
78
92
|
prerelease: false
|
79
93
|
version_requirements: !ruby/object:Gem::Requirement
|
80
94
|
requirements:
|
81
95
|
- - "~>"
|
82
96
|
- !ruby/object:Gem::Version
|
83
|
-
version: 1.
|
97
|
+
version: 1.25.1
|
84
98
|
- !ruby/object:Gem::Dependency
|
85
99
|
name: minitest
|
86
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -219,12 +233,15 @@ files:
|
|
219
233
|
- lib/google/cloud/pubsub/convert.rb
|
220
234
|
- lib/google/cloud/pubsub/credentials.rb
|
221
235
|
- lib/google/cloud/pubsub/errors.rb
|
236
|
+
- lib/google/cloud/pubsub/flow_controller.rb
|
222
237
|
- lib/google/cloud/pubsub/message.rb
|
223
238
|
- lib/google/cloud/pubsub/policy.rb
|
224
239
|
- lib/google/cloud/pubsub/project.rb
|
225
240
|
- lib/google/cloud/pubsub/publish_result.rb
|
226
241
|
- lib/google/cloud/pubsub/received_message.rb
|
227
242
|
- lib/google/cloud/pubsub/retry_policy.rb
|
243
|
+
- lib/google/cloud/pubsub/schema.rb
|
244
|
+
- lib/google/cloud/pubsub/schema/list.rb
|
228
245
|
- lib/google/cloud/pubsub/service.rb
|
229
246
|
- lib/google/cloud/pubsub/snapshot.rb
|
230
247
|
- lib/google/cloud/pubsub/snapshot/list.rb
|
@@ -252,14 +269,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
252
269
|
requirements:
|
253
270
|
- - ">="
|
254
271
|
- !ruby/object:Gem::Version
|
255
|
-
version: '2.
|
272
|
+
version: '2.5'
|
256
273
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
257
274
|
requirements:
|
258
275
|
- - ">="
|
259
276
|
- !ruby/object:Gem::Version
|
260
277
|
version: '0'
|
261
278
|
requirements: []
|
262
|
-
rubygems_version: 3.2.
|
279
|
+
rubygems_version: 3.2.17
|
263
280
|
signing_key:
|
264
281
|
specification_version: 4
|
265
282
|
summary: API Client library for Google Cloud Pub/Sub
|