google-cloud-pubsub 0.33.2 → 0.34.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/AUTHENTICATION.md +4 -4
- data/CHANGELOG.md +45 -0
- data/EMULATOR.md +2 -2
- data/OVERVIEW.md +81 -43
- data/lib/google-cloud-pubsub.rb +10 -7
- data/lib/google/cloud/pubsub.rb +38 -21
- data/lib/google/cloud/pubsub/async_publisher.rb +8 -6
- data/lib/google/cloud/pubsub/batch_publisher.rb +7 -5
- data/lib/google/cloud/pubsub/convert.rb +5 -3
- data/lib/google/cloud/pubsub/credentials.rb +6 -4
- data/lib/google/cloud/pubsub/message.rb +9 -6
- data/lib/google/cloud/pubsub/policy.rb +12 -10
- data/lib/google/cloud/pubsub/project.rb +30 -28
- data/lib/google/cloud/pubsub/publish_result.rb +3 -1
- data/lib/google/cloud/pubsub/received_message.rb +11 -10
- data/lib/google/cloud/pubsub/service.rb +47 -37
- data/lib/google/cloud/pubsub/snapshot.rb +11 -9
- data/lib/google/cloud/pubsub/snapshot/list.rb +10 -8
- data/lib/google/cloud/pubsub/subscriber.rb +32 -6
- data/lib/google/cloud/pubsub/subscriber/enumerator_queue.rb +3 -1
- data/lib/google/cloud/pubsub/subscriber/inventory.rb +4 -2
- data/lib/google/cloud/pubsub/subscriber/stream.rb +23 -43
- data/lib/google/cloud/pubsub/subscriber/timed_unary_buffer.rb +221 -0
- data/lib/google/cloud/pubsub/subscription.rb +157 -80
- data/lib/google/cloud/pubsub/subscription/list.rb +12 -10
- data/lib/google/cloud/pubsub/topic.rb +79 -51
- data/lib/google/cloud/pubsub/topic/list.rb +10 -8
- data/lib/google/cloud/pubsub/v1/credentials.rb +4 -2
- data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/iam_policy.rb +1 -43
- data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/policy.rb +1 -108
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/duration.rb +1 -1
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/empty.rb +1 -1
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/field_mask.rb +1 -1
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/timestamp.rb +1 -1
- data/lib/google/cloud/pubsub/v1/doc/google/pubsub/v1/pubsub.rb +107 -61
- data/lib/google/cloud/pubsub/v1/publisher_client.rb +58 -55
- data/lib/google/cloud/pubsub/v1/publisher_client_config.json +0 -4
- data/lib/google/cloud/pubsub/v1/subscriber_client.rb +177 -128
- data/lib/google/cloud/pubsub/v1/subscriber_client_config.json +0 -4
- data/lib/google/cloud/pubsub/version.rb +4 -2
- data/lib/google/pubsub/v1/pubsub_pb.rb +48 -40
- data/lib/google/pubsub/v1/pubsub_services_pb.rb +201 -161
- metadata +6 -7
- data/lib/google/cloud/pubsub/subscriber/async_stream_pusher.rb +0 -223
- data/lib/google/cloud/pubsub/subscriber/async_unary_pusher.rb +0 -271
|
@@ -18,7 +18,7 @@ require "google/cloud/pubsub/snapshot/list"
|
|
|
18
18
|
|
|
19
19
|
module Google
|
|
20
20
|
module Cloud
|
|
21
|
-
module
|
|
21
|
+
module PubSub
|
|
22
22
|
##
|
|
23
23
|
# # Snapshot
|
|
24
24
|
#
|
|
@@ -35,7 +35,7 @@ module Google
|
|
|
35
35
|
# @example
|
|
36
36
|
# require "google/cloud/pubsub"
|
|
37
37
|
#
|
|
38
|
-
# pubsub = Google::Cloud::
|
|
38
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
39
39
|
# sub = pubsub.subscription "my-sub"
|
|
40
40
|
#
|
|
41
41
|
# snapshot = sub.create_snapshot "my-snapshot"
|
|
@@ -47,14 +47,14 @@ module Google
|
|
|
47
47
|
attr_accessor :service
|
|
48
48
|
|
|
49
49
|
##
|
|
50
|
-
# @private The gRPC Google::
|
|
50
|
+
# @private The gRPC Google::Cloud::PubSub::V1::Snapshot object.
|
|
51
51
|
attr_accessor :grpc
|
|
52
52
|
|
|
53
53
|
##
|
|
54
54
|
# @private Create an empty {Snapshot} object.
|
|
55
55
|
def initialize
|
|
56
56
|
@service = nil
|
|
57
|
-
@grpc = Google::
|
|
57
|
+
@grpc = Google::Cloud::PubSub::V1::Snapshot.new
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
##
|
|
@@ -72,14 +72,14 @@ module Google
|
|
|
72
72
|
# @example
|
|
73
73
|
# require "google/cloud/pubsub"
|
|
74
74
|
#
|
|
75
|
-
# pubsub = Google::Cloud::
|
|
75
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
76
76
|
# sub = pubsub.subscription "my-sub"
|
|
77
77
|
#
|
|
78
78
|
# snapshot = sub.create_snapshot "my-snapshot"
|
|
79
79
|
# snapshot.topic.name #=> "projects/my-project/topics/my-topic"
|
|
80
80
|
#
|
|
81
81
|
def topic
|
|
82
|
-
Topic.
|
|
82
|
+
Topic.from_name @grpc.topic, service
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
##
|
|
@@ -99,7 +99,7 @@ module Google
|
|
|
99
99
|
# @example
|
|
100
100
|
# require "google/cloud/pubsub"
|
|
101
101
|
#
|
|
102
|
-
# pubsub = Google::Cloud::
|
|
102
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
103
103
|
# sub = pubsub.subscription "my-sub"
|
|
104
104
|
#
|
|
105
105
|
# snapshot = sub.create_snapshot "my-snapshot"
|
|
@@ -157,7 +157,7 @@ module Google
|
|
|
157
157
|
# @example
|
|
158
158
|
# require "google/cloud/pubsub"
|
|
159
159
|
#
|
|
160
|
-
# pubsub = Google::Cloud::
|
|
160
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
161
161
|
#
|
|
162
162
|
# pubsub.snapshots.each do |snapshot|
|
|
163
163
|
# snapshot.delete
|
|
@@ -170,7 +170,7 @@ module Google
|
|
|
170
170
|
end
|
|
171
171
|
|
|
172
172
|
##
|
|
173
|
-
# @private New Snapshot from a Google::
|
|
173
|
+
# @private New Snapshot from a Google::Cloud::PubSub::V1::Snapshot
|
|
174
174
|
# object.
|
|
175
175
|
def self.from_grpc grpc, service
|
|
176
176
|
new.tap do |f|
|
|
@@ -196,5 +196,7 @@ module Google
|
|
|
196
196
|
end
|
|
197
197
|
end
|
|
198
198
|
end
|
|
199
|
+
|
|
200
|
+
Pubsub = PubSub unless const_defined? :Pubsub
|
|
199
201
|
end
|
|
200
202
|
end
|
|
@@ -17,7 +17,7 @@ require "delegate"
|
|
|
17
17
|
|
|
18
18
|
module Google
|
|
19
19
|
module Cloud
|
|
20
|
-
module
|
|
20
|
+
module PubSub
|
|
21
21
|
class Snapshot
|
|
22
22
|
##
|
|
23
23
|
# Snapshot::List is a special case Array with additional values.
|
|
@@ -25,7 +25,7 @@ module Google
|
|
|
25
25
|
##
|
|
26
26
|
# If not empty, indicates that there are more snapshots
|
|
27
27
|
# that match the request and this value should be passed to
|
|
28
|
-
# the next {Google::Cloud::
|
|
28
|
+
# the next {Google::Cloud::PubSub::Project#snapshots} to continue.
|
|
29
29
|
attr_accessor :token
|
|
30
30
|
|
|
31
31
|
##
|
|
@@ -45,7 +45,7 @@ module Google
|
|
|
45
45
|
# @example
|
|
46
46
|
# require "google/cloud/pubsub"
|
|
47
47
|
#
|
|
48
|
-
# pubsub = Google::Cloud::
|
|
48
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
49
49
|
#
|
|
50
50
|
# snapshots = pubsub.snapshots
|
|
51
51
|
# if snapshots.next?
|
|
@@ -64,7 +64,7 @@ module Google
|
|
|
64
64
|
# @example
|
|
65
65
|
# require "google/cloud/pubsub"
|
|
66
66
|
#
|
|
67
|
-
# pubsub = Google::Cloud::
|
|
67
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
68
68
|
#
|
|
69
69
|
# snapshots = pubsub.snapshots
|
|
70
70
|
# if snapshots.next?
|
|
@@ -98,7 +98,7 @@ module Google
|
|
|
98
98
|
# @example Iterating each snapshot by passing a block:
|
|
99
99
|
# require "google/cloud/pubsub"
|
|
100
100
|
#
|
|
101
|
-
# pubsub = Google::Cloud::
|
|
101
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
102
102
|
#
|
|
103
103
|
# snapshots = pubsub.snapshots
|
|
104
104
|
# snapshots.all do |snapshot|
|
|
@@ -108,7 +108,7 @@ module Google
|
|
|
108
108
|
# @example Using the enumerator by not passing a block:
|
|
109
109
|
# require "google/cloud/pubsub"
|
|
110
110
|
#
|
|
111
|
-
# pubsub = Google::Cloud::
|
|
111
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
112
112
|
#
|
|
113
113
|
# snapshots = pubsub.snapshots
|
|
114
114
|
# all_names = snapshots.all.map do |snapshot|
|
|
@@ -118,7 +118,7 @@ module Google
|
|
|
118
118
|
# @example Limit the number of API calls made:
|
|
119
119
|
# require "google/cloud/pubsub"
|
|
120
120
|
#
|
|
121
|
-
# pubsub = Google::Cloud::
|
|
121
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
122
122
|
#
|
|
123
123
|
# snapshots = pubsub.snapshots
|
|
124
124
|
# snapshots.all(request_limit: 10) do |snapshot|
|
|
@@ -144,7 +144,7 @@ module Google
|
|
|
144
144
|
|
|
145
145
|
##
|
|
146
146
|
# @private New Snapshots::List from a
|
|
147
|
-
# Google::
|
|
147
|
+
# Google::Cloud::PubSub::V1::ListSnapshotsRequest object.
|
|
148
148
|
def self.from_grpc grpc_list, service, max = nil
|
|
149
149
|
subs = new(Array(grpc_list.snapshots).map do |grpc|
|
|
150
150
|
Snapshot.from_grpc grpc, service
|
|
@@ -174,5 +174,7 @@ module Google
|
|
|
174
174
|
end
|
|
175
175
|
end
|
|
176
176
|
end
|
|
177
|
+
|
|
178
|
+
Pubsub = PubSub unless const_defined? :Pubsub
|
|
177
179
|
end
|
|
178
180
|
end
|
|
@@ -15,19 +15,20 @@
|
|
|
15
15
|
|
|
16
16
|
require "google/cloud/pubsub/service"
|
|
17
17
|
require "google/cloud/pubsub/subscriber/stream"
|
|
18
|
+
require "google/cloud/pubsub/subscriber/timed_unary_buffer"
|
|
18
19
|
require "monitor"
|
|
19
20
|
|
|
20
21
|
module Google
|
|
21
22
|
module Cloud
|
|
22
|
-
module
|
|
23
|
+
module PubSub
|
|
23
24
|
##
|
|
24
25
|
# Subscriber object used to stream and process messages from a
|
|
25
|
-
# Subscription. See {Google::Cloud::
|
|
26
|
+
# Subscription. See {Google::Cloud::PubSub::Subscription#listen}
|
|
26
27
|
#
|
|
27
28
|
# @example
|
|
28
29
|
# require "google/cloud/pubsub"
|
|
29
30
|
#
|
|
30
|
-
# pubsub = Google::Cloud::
|
|
31
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
31
32
|
#
|
|
32
33
|
# sub = pubsub.subscription "my-topic-sub"
|
|
33
34
|
#
|
|
@@ -68,7 +69,8 @@ module Google
|
|
|
68
69
|
|
|
69
70
|
##
|
|
70
71
|
# @private Implementation attributes.
|
|
71
|
-
attr_reader :stream_inventory, :stream_pool, :thread_pool, :
|
|
72
|
+
attr_reader :stream_inventory, :stream_pool, :thread_pool, :buffer,
|
|
73
|
+
:service
|
|
72
74
|
|
|
73
75
|
##
|
|
74
76
|
# @private Create an empty {Subscriber} object.
|
|
@@ -94,6 +96,8 @@ module Google
|
|
|
94
96
|
end
|
|
95
97
|
@stream_pool = stream_pool.map(&:value)
|
|
96
98
|
|
|
99
|
+
@buffer = TimedUnaryBuffer.new self
|
|
100
|
+
|
|
97
101
|
super() # to init MonitorMixin
|
|
98
102
|
end
|
|
99
103
|
|
|
@@ -107,6 +111,8 @@ module Google
|
|
|
107
111
|
@started = true
|
|
108
112
|
@stopped = false
|
|
109
113
|
|
|
114
|
+
# Start the buffer before the streams are all started
|
|
115
|
+
@buffer.start
|
|
110
116
|
@stream_pool.map do |stream|
|
|
111
117
|
Thread.new { stream.start }
|
|
112
118
|
end
|
|
@@ -133,6 +139,8 @@ module Google
|
|
|
133
139
|
end
|
|
134
140
|
end
|
|
135
141
|
stop_pool.map(&:join)
|
|
142
|
+
# Stop the buffer after the streams are all stopped
|
|
143
|
+
synchronize { @buffer.stop }
|
|
136
144
|
|
|
137
145
|
self
|
|
138
146
|
end
|
|
@@ -185,7 +193,7 @@ module Google
|
|
|
185
193
|
# @example
|
|
186
194
|
# require "google/cloud/pubsub"
|
|
187
195
|
#
|
|
188
|
-
# pubsub = Google::Cloud::
|
|
196
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
189
197
|
#
|
|
190
198
|
# sub = pubsub.subscription "my-topic-sub"
|
|
191
199
|
#
|
|
@@ -224,7 +232,7 @@ module Google
|
|
|
224
232
|
# @example
|
|
225
233
|
# require "google/cloud/pubsub"
|
|
226
234
|
#
|
|
227
|
-
# pubsub = Google::Cloud::
|
|
235
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
228
236
|
#
|
|
229
237
|
# sub = pubsub.subscription "my-topic-sub"
|
|
230
238
|
#
|
|
@@ -252,6 +260,7 @@ module Google
|
|
|
252
260
|
@last_error = error
|
|
253
261
|
@error_callbacks
|
|
254
262
|
end
|
|
263
|
+
error_callbacks = default_error_callbacks if error_callbacks.empty?
|
|
255
264
|
error_callbacks.each { |error_callback| error_callback.call error }
|
|
256
265
|
end
|
|
257
266
|
|
|
@@ -267,7 +276,24 @@ module Google
|
|
|
267
276
|
def inspect
|
|
268
277
|
"#<#{self.class.name} #{self}>"
|
|
269
278
|
end
|
|
279
|
+
|
|
280
|
+
protected
|
|
281
|
+
|
|
282
|
+
def default_error_callbacks
|
|
283
|
+
# This is memoized to reduce calls to the configuration.
|
|
284
|
+
@default_error_callbacks ||= begin
|
|
285
|
+
error_callback = Google::Cloud::PubSub.configuration.on_error
|
|
286
|
+
error_callback ||= Google::Cloud.configure.on_error
|
|
287
|
+
if error_callback
|
|
288
|
+
[error_callback]
|
|
289
|
+
else
|
|
290
|
+
[]
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
end
|
|
270
294
|
end
|
|
271
295
|
end
|
|
296
|
+
|
|
297
|
+
Pubsub = PubSub unless const_defined? :Pubsub
|
|
272
298
|
end
|
|
273
299
|
end
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
module Google
|
|
17
17
|
module Cloud
|
|
18
|
-
module
|
|
18
|
+
module PubSub
|
|
19
19
|
class Subscriber
|
|
20
20
|
# @private
|
|
21
21
|
class EnumeratorQueue
|
|
@@ -48,5 +48,7 @@ module Google
|
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
|
+
|
|
52
|
+
Pubsub = PubSub unless const_defined? :Pubsub
|
|
51
53
|
end
|
|
52
54
|
end
|
|
@@ -17,7 +17,7 @@ require "monitor"
|
|
|
17
17
|
|
|
18
18
|
module Google
|
|
19
19
|
module Cloud
|
|
20
|
-
module
|
|
20
|
+
module PubSub
|
|
21
21
|
class Subscriber
|
|
22
22
|
##
|
|
23
23
|
# @private
|
|
@@ -114,7 +114,7 @@ module Google
|
|
|
114
114
|
unless delay_gap.positive?
|
|
115
115
|
delay_target = nil
|
|
116
116
|
delay_gap = nil # wait until broadcast
|
|
117
|
-
stream.
|
|
117
|
+
stream.renew_lease!
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
@wait_cond.wait delay_gap
|
|
@@ -132,5 +132,7 @@ module Google
|
|
|
132
132
|
end
|
|
133
133
|
end
|
|
134
134
|
end
|
|
135
|
+
|
|
136
|
+
Pubsub = PubSub unless const_defined? :Pubsub
|
|
135
137
|
end
|
|
136
138
|
end
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
require "google/cloud/pubsub/subscriber/async_unary_pusher"
|
|
17
16
|
require "google/cloud/pubsub/subscriber/enumerator_queue"
|
|
18
17
|
require "google/cloud/pubsub/subscriber/inventory"
|
|
19
18
|
require "google/cloud/pubsub/service"
|
|
@@ -23,7 +22,7 @@ require "concurrent"
|
|
|
23
22
|
|
|
24
23
|
module Google
|
|
25
24
|
module Cloud
|
|
26
|
-
module
|
|
25
|
+
module PubSub
|
|
27
26
|
class Subscriber
|
|
28
27
|
##
|
|
29
28
|
# @private
|
|
@@ -32,7 +31,7 @@ module Google
|
|
|
32
31
|
|
|
33
32
|
##
|
|
34
33
|
# @private Implementation attributes.
|
|
35
|
-
attr_reader :callback_thread_pool
|
|
34
|
+
attr_reader :callback_thread_pool
|
|
36
35
|
|
|
37
36
|
##
|
|
38
37
|
# Subscriber attributes.
|
|
@@ -48,18 +47,16 @@ module Google
|
|
|
48
47
|
@paused = nil
|
|
49
48
|
@pause_cond = new_cond
|
|
50
49
|
|
|
51
|
-
@inventory = Inventory.new self, subscriber.stream_inventory
|
|
50
|
+
@inventory = Inventory.new self, @subscriber.stream_inventory
|
|
52
51
|
@callback_thread_pool = Concurrent::FixedThreadPool.new \
|
|
53
|
-
subscriber.callback_threads
|
|
54
|
-
@push_thread_pool = Concurrent::FixedThreadPool.new \
|
|
55
|
-
subscriber.push_threads
|
|
52
|
+
@subscriber.callback_threads
|
|
56
53
|
|
|
57
54
|
@stream_keepalive_task = Concurrent::TimerTask.new(
|
|
58
55
|
execution_interval: 30
|
|
59
56
|
) do
|
|
60
57
|
# push empty request every 30 seconds to keep stream alive
|
|
61
58
|
unless inventory.empty?
|
|
62
|
-
push Google::
|
|
59
|
+
push Google::Cloud::PubSub::V1::StreamingPullRequest.new
|
|
63
60
|
end
|
|
64
61
|
end.execute
|
|
65
62
|
|
|
@@ -96,12 +93,6 @@ module Google
|
|
|
96
93
|
|
|
97
94
|
# Once all the callbacks are stopped, we can stop the inventory.
|
|
98
95
|
@inventory.stop
|
|
99
|
-
|
|
100
|
-
# Stop the publisher and send the final batch of changes.
|
|
101
|
-
@async_pusher.stop if @async_pusher # will push current batch
|
|
102
|
-
|
|
103
|
-
# Stop the push thread pool now that the pusher is stopped.
|
|
104
|
-
@push_thread_pool.shutdown
|
|
105
96
|
end
|
|
106
97
|
|
|
107
98
|
self
|
|
@@ -116,13 +107,6 @@ module Google
|
|
|
116
107
|
end
|
|
117
108
|
|
|
118
109
|
def wait!
|
|
119
|
-
synchronize do
|
|
120
|
-
# # Wait for the push thread pool to finish pushing all remaining
|
|
121
|
-
# changes. Do not wait indefinitely.
|
|
122
|
-
@push_thread_pool.wait_for_termination 60
|
|
123
|
-
@push_thread_pool.kill if @push_thread_pool.shuttingdown?
|
|
124
|
-
end
|
|
125
|
-
|
|
126
110
|
self
|
|
127
111
|
end
|
|
128
112
|
|
|
@@ -133,9 +117,8 @@ module Google
|
|
|
133
117
|
return true if ack_ids.empty?
|
|
134
118
|
|
|
135
119
|
synchronize do
|
|
136
|
-
@async_pusher ||= AsyncUnaryPusher.new(self).start
|
|
137
|
-
@async_pusher.acknowledge ack_ids
|
|
138
120
|
@inventory.remove ack_ids
|
|
121
|
+
@subscriber.buffer.acknowledge ack_ids
|
|
139
122
|
unpause_streaming!
|
|
140
123
|
end
|
|
141
124
|
|
|
@@ -149,19 +132,13 @@ module Google
|
|
|
149
132
|
return true if mod_ack_ids.empty?
|
|
150
133
|
|
|
151
134
|
synchronize do
|
|
152
|
-
@async_pusher ||= AsyncUnaryPusher.new(self).start
|
|
153
|
-
@async_pusher.delay deadline, mod_ack_ids
|
|
154
135
|
@inventory.remove mod_ack_ids
|
|
136
|
+
@subscriber.buffer.modify_ack_deadline deadline, mod_ack_ids
|
|
155
137
|
unpause_streaming!
|
|
156
138
|
end
|
|
157
139
|
|
|
158
140
|
true
|
|
159
141
|
end
|
|
160
|
-
alias delay modify_ack_deadline
|
|
161
|
-
|
|
162
|
-
def async_pusher
|
|
163
|
-
synchronize { @async_pusher }
|
|
164
|
-
end
|
|
165
142
|
|
|
166
143
|
def push request
|
|
167
144
|
synchronize { @request_queue.push request }
|
|
@@ -173,12 +150,13 @@ module Google
|
|
|
173
150
|
|
|
174
151
|
##
|
|
175
152
|
# @private
|
|
176
|
-
def
|
|
153
|
+
def renew_lease!
|
|
177
154
|
synchronize do
|
|
178
155
|
return true if @inventory.empty?
|
|
179
156
|
|
|
180
|
-
@
|
|
181
|
-
|
|
157
|
+
@subscriber.buffer.renew_lease @subscriber.deadline,
|
|
158
|
+
@inventory.ack_ids
|
|
159
|
+
unpause_streaming!
|
|
182
160
|
end
|
|
183
161
|
|
|
184
162
|
true
|
|
@@ -214,7 +192,7 @@ module Google
|
|
|
214
192
|
@request_queue = EnumeratorQueue.new self
|
|
215
193
|
@request_queue.push initial_input_request
|
|
216
194
|
old_queue.each { |obj| @request_queue.push obj }
|
|
217
|
-
enum = subscriber.service.streaming_pull @request_queue.each
|
|
195
|
+
enum = @subscriber.service.streaming_pull @request_queue.each
|
|
218
196
|
|
|
219
197
|
@stopped = nil
|
|
220
198
|
@paused = nil
|
|
@@ -239,8 +217,8 @@ module Google
|
|
|
239
217
|
|
|
240
218
|
synchronize do
|
|
241
219
|
# Create receipt of received messages reception
|
|
242
|
-
@
|
|
243
|
-
|
|
220
|
+
@subscriber.buffer.modify_ack_deadline @subscriber.deadline,
|
|
221
|
+
received_ack_ids
|
|
244
222
|
|
|
245
223
|
# Add received messages to inventory
|
|
246
224
|
@inventory.add received_ack_ids
|
|
@@ -276,7 +254,7 @@ module Google
|
|
|
276
254
|
retry
|
|
277
255
|
rescue StandardError => e
|
|
278
256
|
synchronize do
|
|
279
|
-
subscriber.error! e
|
|
257
|
+
@subscriber.error! e
|
|
280
258
|
start_streaming! unless @stopped
|
|
281
259
|
end
|
|
282
260
|
|
|
@@ -290,9 +268,9 @@ module Google
|
|
|
290
268
|
|
|
291
269
|
Concurrent::Future.new(executor: callback_thread_pool) do
|
|
292
270
|
begin
|
|
293
|
-
subscriber.callback.call rec_msg
|
|
271
|
+
@subscriber.callback.call rec_msg
|
|
294
272
|
rescue StandardError => callback_error
|
|
295
|
-
subscriber.error! callback_error
|
|
273
|
+
@subscriber.error! callback_error
|
|
296
274
|
end
|
|
297
275
|
end.execute
|
|
298
276
|
end
|
|
@@ -339,12 +317,12 @@ module Google
|
|
|
339
317
|
end
|
|
340
318
|
|
|
341
319
|
def initial_input_request
|
|
342
|
-
Google::
|
|
343
|
-
req.subscription = subscriber.subscription_name
|
|
344
|
-
req.stream_ack_deadline_seconds = subscriber.deadline
|
|
320
|
+
Google::Cloud::PubSub::V1::StreamingPullRequest.new.tap do |req|
|
|
321
|
+
req.subscription = @subscriber.subscription_name
|
|
322
|
+
req.stream_ack_deadline_seconds = @subscriber.deadline
|
|
345
323
|
req.modify_deadline_ack_ids += @inventory.ack_ids
|
|
346
324
|
req.modify_deadline_seconds += \
|
|
347
|
-
@inventory.ack_ids.map { subscriber.deadline }
|
|
325
|
+
@inventory.ack_ids.map { @subscriber.deadline }
|
|
348
326
|
end
|
|
349
327
|
end
|
|
350
328
|
|
|
@@ -368,5 +346,7 @@ module Google
|
|
|
368
346
|
end
|
|
369
347
|
end
|
|
370
348
|
end
|
|
349
|
+
|
|
350
|
+
Pubsub = PubSub unless const_defined? :Pubsub
|
|
371
351
|
end
|
|
372
352
|
end
|