google-cloud-pubsub 2.4.0 → 2.7.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/AUTHENTICATION.md +2 -1
- data/CHANGELOG.md +55 -0
- data/CONTRIBUTING.md +2 -3
- data/OVERVIEW.md +9 -6
- data/lib/google/cloud/pubsub.rb +0 -4
- data/lib/google/cloud/pubsub/async_publisher.rb +42 -6
- data/lib/google/cloud/pubsub/async_publisher/batch.rb +2 -6
- data/lib/google/cloud/pubsub/batch_publisher.rb +31 -30
- data/lib/google/cloud/pubsub/errors.rb +8 -0
- data/lib/google/cloud/pubsub/flow_controller.rb +139 -0
- data/lib/google/cloud/pubsub/project.rb +248 -11
- 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 +143 -31
- data/lib/google/cloud/pubsub/snapshot.rb +1 -0
- data/lib/google/cloud/pubsub/subscriber.rb +22 -22
- data/lib/google/cloud/pubsub/subscription.rb +27 -25
- data/lib/google/cloud/pubsub/topic.rb +103 -3
- data/lib/google/cloud/pubsub/version.rb +1 -1
- metadata +20 -3
@@ -733,19 +733,28 @@ module Google
|
|
733
733
|
end
|
734
734
|
|
735
735
|
##
|
736
|
-
# Pulls messages from the server
|
737
|
-
#
|
738
|
-
#
|
739
|
-
#
|
736
|
+
# Pulls messages from the server, blocking until messages are available
|
737
|
+
# when called with the `immediate: false` option, which is recommended
|
738
|
+
# to avoid adverse impacts on the performance of pull operations.
|
739
|
+
#
|
740
|
+
# Raises an API error with status `UNAVAILABLE` if there are too many
|
741
|
+
# concurrent pull requests pending for the given subscription.
|
740
742
|
#
|
741
743
|
# See also {#listen} for the preferred way to process messages as they
|
742
744
|
# become available.
|
743
745
|
#
|
744
|
-
# @param [Boolean] immediate
|
745
|
-
#
|
746
|
-
#
|
747
|
-
#
|
748
|
-
# is
|
746
|
+
# @param [Boolean] immediate Whether to return immediately or block until
|
747
|
+
# messages are available.
|
748
|
+
#
|
749
|
+
# **Warning:** The default value of this field is `true`. However, sending
|
750
|
+
# `true` is discouraged because it adversely impacts the performance of
|
751
|
+
# pull operations. We recommend that users always explicitly set this field
|
752
|
+
# to `false`.
|
753
|
+
#
|
754
|
+
# If this field set to `true`, the system will respond immediately
|
755
|
+
# even if it there are no messages available to return in the pull
|
756
|
+
# response. Otherwise, the system may wait (for a bounded amount of time)
|
757
|
+
# until at least one message is available, rather than returning no messages.
|
749
758
|
#
|
750
759
|
# See also {#listen} for the preferred way to process messages as they
|
751
760
|
# become available.
|
@@ -755,31 +764,24 @@ module Google
|
|
755
764
|
#
|
756
765
|
# @return [Array<Google::Cloud::PubSub::ReceivedMessage>]
|
757
766
|
#
|
758
|
-
# @example
|
767
|
+
# @example The `immediate: false` option is now recommended to avoid adverse impacts on pull operations:
|
759
768
|
# require "google/cloud/pubsub"
|
760
769
|
#
|
761
770
|
# pubsub = Google::Cloud::PubSub.new
|
762
771
|
#
|
763
772
|
# sub = pubsub.subscription "my-topic-sub"
|
764
|
-
# sub.pull
|
765
|
-
#
|
766
|
-
# @example A maximum number of messages returned can also be specified:
|
767
|
-
# require "google/cloud/pubsub"
|
768
|
-
#
|
769
|
-
# pubsub = Google::Cloud::PubSub.new
|
770
|
-
#
|
771
|
-
# sub = pubsub.subscription "my-topic-sub"
|
772
|
-
# sub.pull(max: 10).each do |received_message|
|
773
|
+
# received_messages = sub.pull immediate: false
|
774
|
+
# received_messages.each do |received_message|
|
773
775
|
# received_message.acknowledge!
|
774
776
|
# end
|
775
777
|
#
|
776
|
-
# @example
|
778
|
+
# @example A maximum number of messages returned can also be specified:
|
777
779
|
# require "google/cloud/pubsub"
|
778
780
|
#
|
779
781
|
# pubsub = Google::Cloud::PubSub.new
|
780
782
|
#
|
781
783
|
# sub = pubsub.subscription "my-topic-sub"
|
782
|
-
# received_messages = sub.pull immediate: false
|
784
|
+
# received_messages = sub.pull immediate: false, max: 10
|
783
785
|
# received_messages.each do |received_message|
|
784
786
|
# received_message.acknowledge!
|
785
787
|
# end
|
@@ -1010,7 +1012,7 @@ module Google
|
|
1010
1012
|
# pubsub = Google::Cloud::PubSub.new
|
1011
1013
|
#
|
1012
1014
|
# sub = pubsub.subscription "my-topic-sub"
|
1013
|
-
# received_messages = sub.pull
|
1015
|
+
# received_messages = sub.pull immediate: false
|
1014
1016
|
# sub.acknowledge received_messages
|
1015
1017
|
#
|
1016
1018
|
def acknowledge *messages
|
@@ -1045,7 +1047,7 @@ module Google
|
|
1045
1047
|
# pubsub = Google::Cloud::PubSub.new
|
1046
1048
|
#
|
1047
1049
|
# sub = pubsub.subscription "my-topic-sub"
|
1048
|
-
# received_messages = sub.pull
|
1050
|
+
# received_messages = sub.pull immediate: false
|
1049
1051
|
# sub.modify_ack_deadline 120, received_messages
|
1050
1052
|
#
|
1051
1053
|
def modify_ack_deadline new_deadline, *messages
|
@@ -1143,7 +1145,7 @@ module Google
|
|
1143
1145
|
#
|
1144
1146
|
# snapshot = sub.create_snapshot
|
1145
1147
|
#
|
1146
|
-
# received_messages = sub.pull
|
1148
|
+
# received_messages = sub.pull immediate: false
|
1147
1149
|
# sub.acknowledge received_messages
|
1148
1150
|
#
|
1149
1151
|
# sub.seek snapshot
|
@@ -1156,7 +1158,7 @@ module Google
|
|
1156
1158
|
#
|
1157
1159
|
# time = Time.now
|
1158
1160
|
#
|
1159
|
-
# received_messages = sub.pull
|
1161
|
+
# received_messages = sub.pull immediate: false
|
1160
1162
|
# sub.acknowledge received_messages
|
1161
1163
|
#
|
1162
1164
|
# sub.seek time
|
@@ -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"
|
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.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: 2021-
|
12
|
+
date: 2021-07-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: concurrent-ruby
|
@@ -67,6 +67,20 @@ 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
|
@@ -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
|
@@ -259,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
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
|