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
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7e3e1d9e63979754089bd5108e56abee4648fa7cca2db8bd24c5b44b3608047c
|
|
4
|
+
data.tar.gz: dac86cdbc741948a11d052baa51c470096a49ed3d8fa2900785b70fa74910beb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0c9a754781fcb85633efcf1ef7fd4f6660f9faafb531e94f8bf9c0b82fcd385069d7ca8ba8cb845b5927b9c1c6d89205387fb877f1b28aa3e59da2eebd226824
|
|
7
|
+
data.tar.gz: 3b349b5b3aa431a143ba3091f849f21bdde791184d687cf51debf1ba85b44b7e6074b9cac3f7203e27006136b53d438a92a79d8b8db71ec0bc3bbcf211f3144b
|
data/AUTHENTICATION.md
CHANGED
|
@@ -78,7 +78,7 @@ The environment variables that Pub/Sub checks for project ID are:
|
|
|
78
78
|
1. `PUBSUB_PROJECT`
|
|
79
79
|
2. `GOOGLE_CLOUD_PROJECT`
|
|
80
80
|
|
|
81
|
-
The environment variables that Pub/Sub checks for credentials are configured on {Google::Cloud::
|
|
81
|
+
The environment variables that Pub/Sub checks for credentials are configured on {Google::Cloud::PubSub::V1::Credentials}:
|
|
82
82
|
|
|
83
83
|
1. `PUBSUB_CREDENTIALS` - Path to JSON file, or JSON contents
|
|
84
84
|
2. `PUBSUB_KEYFILE` - Path to JSON file, or JSON contents
|
|
@@ -92,7 +92,7 @@ require "google/cloud/pubsub"
|
|
|
92
92
|
ENV["PUBSUB_PROJECT"] = "my-project-id"
|
|
93
93
|
ENV["PUBSUB_CREDENTIALS"] = "path/to/keyfile.json"
|
|
94
94
|
|
|
95
|
-
pubsub = Google::Cloud::
|
|
95
|
+
pubsub = Google::Cloud::PubSub.new
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
### Configuration
|
|
@@ -102,12 +102,12 @@ The **Project ID** and **Credentials JSON** can be configured instead of placing
|
|
|
102
102
|
```ruby
|
|
103
103
|
require "google/cloud/pubsub"
|
|
104
104
|
|
|
105
|
-
Google::Cloud::
|
|
105
|
+
Google::Cloud::PubSub.configure do |config|
|
|
106
106
|
config.project_id = "my-project-id"
|
|
107
107
|
config.credentials = "path/to/keyfile.json"
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
pubsub = Google::Cloud::
|
|
110
|
+
pubsub = Google::Cloud::PubSub.new
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
### Cloud SDK
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,50 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
+
### 0.34.0 / 2019-02-01
|
|
4
|
+
|
|
5
|
+
* Switch to use Google::Cloud::PubSub namespace.
|
|
6
|
+
* Add PubSub on_error configuration.
|
|
7
|
+
* Major updates to Subscriber
|
|
8
|
+
* Add dependency on current-ruby.
|
|
9
|
+
* Updates are now made using unary API calls, not the gRPC stream.
|
|
10
|
+
* Update Subscriber inventory lease mechanics:
|
|
11
|
+
* This change will help avoid race conditions by ensuring that
|
|
12
|
+
inventory lease renewal actions don't override ack/nack/delay
|
|
13
|
+
actions made on a received message via the Subscriber callback.
|
|
14
|
+
* Changes to avoid potential race conditions in updates.
|
|
15
|
+
* Add reference?/resource? helper methods:
|
|
16
|
+
* Topic#reference?
|
|
17
|
+
* Topic#resource?
|
|
18
|
+
* Subscription#reference?
|
|
19
|
+
* Subscription#resource?
|
|
20
|
+
* Add documentation for methods that will make an API call
|
|
21
|
+
when called on a reference object.
|
|
22
|
+
* Topic#labels
|
|
23
|
+
* Subscription#topic
|
|
24
|
+
* Subscription#deadline
|
|
25
|
+
* Subscription#retain_acked
|
|
26
|
+
* Subscription#retention
|
|
27
|
+
* Subscription#endpoint
|
|
28
|
+
* Subscription#labels
|
|
29
|
+
* Subscription#exists?
|
|
30
|
+
* Subscription#listen (without deadline optional argument)
|
|
31
|
+
* Add example code for avoiding API calls to Overview guide.
|
|
32
|
+
* Remove the #delay alias for modify_ack_deadline.
|
|
33
|
+
* Users should use the modify_ack_deadline and modify_ack_deadline!
|
|
34
|
+
methods directly instead.
|
|
35
|
+
* Make use of Credentials#project_id
|
|
36
|
+
* Use Credentials#project_id
|
|
37
|
+
If a project_id is not provided, use the value on the Credentials object.
|
|
38
|
+
This value was added in googleauth 0.7.0.
|
|
39
|
+
* Loosen googleauth dependency
|
|
40
|
+
Allow for new releases up to 0.10.
|
|
41
|
+
The googleauth devs have committed to maintanining the current API
|
|
42
|
+
and will not make backwards compatible changes before 0.10.
|
|
43
|
+
* Update low level API
|
|
44
|
+
* Add expiration_policy field
|
|
45
|
+
* Numerous updates and fixes to the low-level documentation,
|
|
46
|
+
including fixes for some broken links.i
|
|
47
|
+
|
|
3
48
|
### 0.33.2 / 2018-10-29
|
|
4
49
|
|
|
5
50
|
* Rename delay methods to modify_ack_deadline
|
data/EMULATOR.md
CHANGED
|
@@ -17,7 +17,7 @@ require "google/cloud/pubsub"
|
|
|
17
17
|
# Make Pub/Sub use the emulator
|
|
18
18
|
ENV["PUBSUB_EMULATOR_HOST"] = "localhost:8918"
|
|
19
19
|
|
|
20
|
-
pubsub = Google::Cloud::
|
|
20
|
+
pubsub = Google::Cloud::PubSub.new "emulator-project-id"
|
|
21
21
|
|
|
22
22
|
# Get a topic in the current project
|
|
23
23
|
my_topic = pubsub.new_topic "my-topic"
|
|
@@ -29,7 +29,7 @@ Or by providing the `emulator_host` argument:
|
|
|
29
29
|
```ruby
|
|
30
30
|
require "google/cloud/pubsub"
|
|
31
31
|
|
|
32
|
-
pubsub = Google::Cloud::
|
|
32
|
+
pubsub = Google::Cloud::PubSub.new emulator_host: "localhost:8918"
|
|
33
33
|
|
|
34
34
|
# Get a topic in the current project
|
|
35
35
|
my_topic = pubsub.new_topic "my-topic"
|
data/OVERVIEW.md
CHANGED
|
@@ -17,7 +17,7 @@ Guide}.
|
|
|
17
17
|
```ruby
|
|
18
18
|
require "google/cloud/pubsub"
|
|
19
19
|
|
|
20
|
-
pubsub = Google::Cloud::
|
|
20
|
+
pubsub = Google::Cloud::PubSub.new
|
|
21
21
|
|
|
22
22
|
topic = pubsub.topic "my-topic"
|
|
23
23
|
topic.publish "task completed"
|
|
@@ -29,24 +29,24 @@ To learn more about Pub/Sub, read the [Google Cloud Pub/Sub Overview
|
|
|
29
29
|
## Retrieving Topics
|
|
30
30
|
|
|
31
31
|
A Topic is a named resource to which messages are sent by publishers. A Topic is
|
|
32
|
-
found by its name. (See {Google::Cloud::
|
|
32
|
+
found by its name. (See {Google::Cloud::PubSub::Project#topic Project#topic})
|
|
33
33
|
|
|
34
34
|
```ruby
|
|
35
35
|
require "google/cloud/pubsub"
|
|
36
36
|
|
|
37
|
-
pubsub = Google::Cloud::
|
|
37
|
+
pubsub = Google::Cloud::PubSub.new
|
|
38
38
|
topic = pubsub.topic "my-topic"
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
## Creating a Topic
|
|
42
42
|
|
|
43
43
|
A Topic is created from a Project. (See
|
|
44
|
-
{Google::Cloud::
|
|
44
|
+
{Google::Cloud::PubSub::Project#create_topic Project#create_topic})
|
|
45
45
|
|
|
46
46
|
```ruby
|
|
47
47
|
require "google/cloud/pubsub"
|
|
48
48
|
|
|
49
|
-
pubsub = Google::Cloud::
|
|
49
|
+
pubsub = Google::Cloud::PubSub.new
|
|
50
50
|
topic = pubsub.create_topic "my-topic"
|
|
51
51
|
```
|
|
52
52
|
|
|
@@ -55,12 +55,12 @@ topic = pubsub.create_topic "my-topic"
|
|
|
55
55
|
A Subscription is a named resource representing the stream of messages from a
|
|
56
56
|
single, specific Topic, to be delivered to the subscribing application. A
|
|
57
57
|
Subscription is found by its name. (See
|
|
58
|
-
{Google::Cloud::
|
|
58
|
+
{Google::Cloud::PubSub::Topic#subscription Topic#subscription})
|
|
59
59
|
|
|
60
60
|
```ruby
|
|
61
61
|
require "google/cloud/pubsub"
|
|
62
62
|
|
|
63
|
-
pubsub = Google::Cloud::
|
|
63
|
+
pubsub = Google::Cloud::PubSub.new
|
|
64
64
|
|
|
65
65
|
topic = pubsub.topic "my-topic"
|
|
66
66
|
subscription = topic.subscription "my-topic-subscription"
|
|
@@ -70,12 +70,12 @@ puts subscription.name
|
|
|
70
70
|
## Creating a Subscription
|
|
71
71
|
|
|
72
72
|
A Subscription is created from a Topic. (See
|
|
73
|
-
{Google::Cloud::
|
|
73
|
+
{Google::Cloud::PubSub::Topic#subscribe Topic#subscribe})
|
|
74
74
|
|
|
75
75
|
```ruby
|
|
76
76
|
require "google/cloud/pubsub"
|
|
77
77
|
|
|
78
|
-
pubsub = Google::Cloud::
|
|
78
|
+
pubsub = Google::Cloud::PubSub.new
|
|
79
79
|
|
|
80
80
|
topic = pubsub.topic "my-topic"
|
|
81
81
|
sub = topic.subscribe "my-topic-sub"
|
|
@@ -88,7 +88,7 @@ be acknowledged as well as an endpoint URL to push the messages to:
|
|
|
88
88
|
```ruby
|
|
89
89
|
require "google/cloud/pubsub"
|
|
90
90
|
|
|
91
|
-
pubsub = Google::Cloud::
|
|
91
|
+
pubsub = Google::Cloud::PubSub.new
|
|
92
92
|
|
|
93
93
|
topic = pubsub.topic "my-topic"
|
|
94
94
|
sub = topic.subscribe "my-topic-sub",
|
|
@@ -100,12 +100,12 @@ sub = topic.subscribe "my-topic-sub",
|
|
|
100
100
|
|
|
101
101
|
Messages are published to a topic. Any message published to a topic without a
|
|
102
102
|
subscription will be lost. Ensure the topic has a subscription before
|
|
103
|
-
publishing. (See {Google::Cloud::
|
|
103
|
+
publishing. (See {Google::Cloud::PubSub::Topic#publish Topic#publish})
|
|
104
104
|
|
|
105
105
|
```ruby
|
|
106
106
|
require "google/cloud/pubsub"
|
|
107
107
|
|
|
108
|
-
pubsub = Google::Cloud::
|
|
108
|
+
pubsub = Google::Cloud::PubSub.new
|
|
109
109
|
|
|
110
110
|
topic = pubsub.topic "my-topic"
|
|
111
111
|
msg = topic.publish "task completed"
|
|
@@ -116,7 +116,7 @@ Messages can also be published with attributes:
|
|
|
116
116
|
```ruby
|
|
117
117
|
require "google/cloud/pubsub"
|
|
118
118
|
|
|
119
|
-
pubsub = Google::Cloud::
|
|
119
|
+
pubsub = Google::Cloud::PubSub.new
|
|
120
120
|
|
|
121
121
|
topic = pubsub.topic "my-topic"
|
|
122
122
|
msg = topic.publish "task completed",
|
|
@@ -125,13 +125,13 @@ msg = topic.publish "task completed",
|
|
|
125
125
|
```
|
|
126
126
|
|
|
127
127
|
Messages can also be published in batches asynchronously using `publish_async`.
|
|
128
|
-
(See {Google::Cloud::
|
|
129
|
-
{Google::Cloud::
|
|
128
|
+
(See {Google::Cloud::PubSub::Topic#publish_async Topic#publish_async} and
|
|
129
|
+
{Google::Cloud::PubSub::AsyncPublisher AsyncPublisher})
|
|
130
130
|
|
|
131
131
|
```ruby
|
|
132
132
|
require "google/cloud/pubsub"
|
|
133
133
|
|
|
134
|
-
pubsub = Google::Cloud::
|
|
134
|
+
pubsub = Google::Cloud::PubSub.new
|
|
135
135
|
|
|
136
136
|
topic = pubsub.topic "my-topic"
|
|
137
137
|
topic.publish_async "task completed" do |result|
|
|
@@ -146,12 +146,12 @@ topic.async_publisher.stop.wait!
|
|
|
146
146
|
```
|
|
147
147
|
|
|
148
148
|
Or multiple messages can be published in batches at the same time by passing a
|
|
149
|
-
block to `publish`. (See {Google::Cloud::
|
|
149
|
+
block to `publish`. (See {Google::Cloud::PubSub::BatchPublisher BatchPublisher})
|
|
150
150
|
|
|
151
151
|
```ruby
|
|
152
152
|
require "google/cloud/pubsub"
|
|
153
153
|
|
|
154
|
-
pubsub = Google::Cloud::
|
|
154
|
+
pubsub = Google::Cloud::PubSub.new
|
|
155
155
|
|
|
156
156
|
topic = pubsub.topic "my-topic"
|
|
157
157
|
msgs = topic.publish do |batch|
|
|
@@ -164,13 +164,13 @@ end
|
|
|
164
164
|
## Receiving messages
|
|
165
165
|
|
|
166
166
|
Messages can be streamed from a subscription with a subscriber object that is
|
|
167
|
-
created using `listen`. (See {Google::Cloud::
|
|
168
|
-
Subscription#listen} and {Google::Cloud::
|
|
167
|
+
created using `listen`. (See {Google::Cloud::PubSub::Subscription#listen
|
|
168
|
+
Subscription#listen} and {Google::Cloud::PubSub::Subscriber Subscriber})
|
|
169
169
|
|
|
170
170
|
```ruby
|
|
171
171
|
require "google/cloud/pubsub"
|
|
172
172
|
|
|
173
|
-
pubsub = Google::Cloud::
|
|
173
|
+
pubsub = Google::Cloud::PubSub.new
|
|
174
174
|
|
|
175
175
|
sub = pubsub.subscription "my-topic-sub"
|
|
176
176
|
|
|
@@ -187,12 +187,12 @@ subscriber.stop.wait!
|
|
|
187
187
|
```
|
|
188
188
|
|
|
189
189
|
Messages also can be pulled directly in a one-time operation. (See
|
|
190
|
-
{Google::Cloud::
|
|
190
|
+
{Google::Cloud::PubSub::Subscription#pull Subscription#pull})
|
|
191
191
|
|
|
192
192
|
```ruby
|
|
193
193
|
require "google/cloud/pubsub"
|
|
194
194
|
|
|
195
|
-
pubsub = Google::Cloud::
|
|
195
|
+
pubsub = Google::Cloud::PubSub.new
|
|
196
196
|
|
|
197
197
|
sub = pubsub.subscription "my-topic-sub"
|
|
198
198
|
received_messages = sub.pull
|
|
@@ -203,7 +203,7 @@ A maximum number of messages to pull can be specified:
|
|
|
203
203
|
```ruby
|
|
204
204
|
require "google/cloud/pubsub"
|
|
205
205
|
|
|
206
|
-
pubsub = Google::Cloud::
|
|
206
|
+
pubsub = Google::Cloud::PubSub.new
|
|
207
207
|
|
|
208
208
|
sub = pubsub.subscription "my-topic-sub"
|
|
209
209
|
received_messages = sub.pull max: 10
|
|
@@ -216,13 +216,13 @@ to be removed so it cannot be pulled again.
|
|
|
216
216
|
|
|
217
217
|
A Message that can be acknowledged is called a ReceivedMessage. ReceivedMessages
|
|
218
218
|
can be acknowledged one at a time: (See
|
|
219
|
-
{Google::Cloud::
|
|
219
|
+
{Google::Cloud::PubSub::ReceivedMessage#acknowledge!
|
|
220
220
|
ReceivedMessage#acknowledge!})
|
|
221
221
|
|
|
222
222
|
```ruby
|
|
223
223
|
require "google/cloud/pubsub"
|
|
224
224
|
|
|
225
|
-
pubsub = Google::Cloud::
|
|
225
|
+
pubsub = Google::Cloud::PubSub.new
|
|
226
226
|
|
|
227
227
|
sub = pubsub.subscription "my-topic-sub"
|
|
228
228
|
|
|
@@ -239,12 +239,12 @@ subscriber.stop.wait!
|
|
|
239
239
|
```
|
|
240
240
|
|
|
241
241
|
Or, multiple messages can be acknowledged in a single API call: (See
|
|
242
|
-
{Google::Cloud::
|
|
242
|
+
{Google::Cloud::PubSub::Subscription#acknowledge Subscription#acknowledge})
|
|
243
243
|
|
|
244
244
|
```ruby
|
|
245
245
|
require "google/cloud/pubsub"
|
|
246
246
|
|
|
247
|
-
pubsub = Google::Cloud::
|
|
247
|
+
pubsub = Google::Cloud::PubSub.new
|
|
248
248
|
|
|
249
249
|
sub = pubsub.subscription "my-topic-sub"
|
|
250
250
|
received_messages = sub.pull
|
|
@@ -257,13 +257,13 @@ A message must be acknowledged after it is pulled, or Pub/Sub will mark the
|
|
|
257
257
|
message for redelivery. The message acknowledgement deadline can delayed if more
|
|
258
258
|
time is needed. This will allow more time to process the message before the
|
|
259
259
|
message is marked for redelivery. (See
|
|
260
|
-
{Google::Cloud::
|
|
260
|
+
{Google::Cloud::PubSub::ReceivedMessage#modify_ack_deadline!
|
|
261
261
|
ReceivedMessage#modify_ack_deadline!})
|
|
262
262
|
|
|
263
263
|
```ruby
|
|
264
264
|
require "google/cloud/pubsub"
|
|
265
265
|
|
|
266
|
-
pubsub = Google::Cloud::
|
|
266
|
+
pubsub = Google::Cloud::PubSub.new
|
|
267
267
|
|
|
268
268
|
sub = pubsub.subscription "my-topic-sub"
|
|
269
269
|
subscriber = sub.listen do |received_message|
|
|
@@ -285,7 +285,7 @@ The message can also be made available for immediate redelivery:
|
|
|
285
285
|
```ruby
|
|
286
286
|
require "google/cloud/pubsub"
|
|
287
287
|
|
|
288
|
-
pubsub = Google::Cloud::
|
|
288
|
+
pubsub = Google::Cloud::PubSub.new
|
|
289
289
|
|
|
290
290
|
sub = pubsub.subscription "my-topic-sub"
|
|
291
291
|
subscriber = sub.listen do |received_message|
|
|
@@ -303,19 +303,57 @@ subscriber.stop.wait!
|
|
|
303
303
|
```
|
|
304
304
|
|
|
305
305
|
Multiple messages can be delayed or made available for immediate redelivery:
|
|
306
|
-
(See {Google::Cloud::
|
|
306
|
+
(See {Google::Cloud::PubSub::Subscription#modify_ack_deadline
|
|
307
307
|
Subscription#modify_ack_deadline})
|
|
308
308
|
|
|
309
309
|
```ruby
|
|
310
310
|
require "google/cloud/pubsub"
|
|
311
311
|
|
|
312
|
-
pubsub = Google::Cloud::
|
|
312
|
+
pubsub = Google::Cloud::PubSub.new
|
|
313
313
|
|
|
314
314
|
sub = pubsub.subscription "my-topic-sub"
|
|
315
315
|
received_messages = sub.pull
|
|
316
316
|
sub.modify_ack_deadline 120, received_messages
|
|
317
317
|
```
|
|
318
318
|
|
|
319
|
+
## Minimizing API calls before receiving and acknowledging messages
|
|
320
|
+
|
|
321
|
+
A subscription object can be created without making any API calls by providing
|
|
322
|
+
the `skip_lookup` argument to {Google::Cloud::PubSub::Project#subscription
|
|
323
|
+
Project#subscription} or {Google::Cloud::PubSub::Topic#subscription
|
|
324
|
+
Topic#subscription}. A subscriber object can also be created without an API call
|
|
325
|
+
by providing the `deadline` optional argument to
|
|
326
|
+
{Google::Cloud::PubSub::Subscription#listen Subscription#listen}:
|
|
327
|
+
|
|
328
|
+
```ruby
|
|
329
|
+
require "google/cloud/pubsub"
|
|
330
|
+
|
|
331
|
+
pubsub = Google::Cloud::PubSub.new
|
|
332
|
+
|
|
333
|
+
# No API call is made to retrieve the subscription resource.
|
|
334
|
+
sub = pubsub.subscription "my-topic-sub", skip_lookup: true
|
|
335
|
+
|
|
336
|
+
# No API call is made to retrieve the subscription deadline.
|
|
337
|
+
subscriber = sub.listen deadline: 60 do |received_message|
|
|
338
|
+
# process message
|
|
339
|
+
received_message.acknowledge!
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
# Start background threads that will call block passed to listen.
|
|
343
|
+
subscriber.start
|
|
344
|
+
|
|
345
|
+
# Shut down the subscriber when ready to stop receiving messages.
|
|
346
|
+
subscriber.stop.wait!
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
Skipping API calls may be used to avoid `Google::Cloud::PermissionDeniedError`
|
|
350
|
+
if your account has limited access to the Pub/Sub API. In particular, the role
|
|
351
|
+
`roles/pubsub.subscriber` does not have the permission
|
|
352
|
+
`pubsub.subscriptions.get`, which is required to retrieve a subscription
|
|
353
|
+
resource. See [Access Control -
|
|
354
|
+
Roles](https://cloud.google.com/pubsub/docs/access-control#tbl_roles) for the
|
|
355
|
+
complete list of Pub/Sub roles and permissions.
|
|
356
|
+
|
|
319
357
|
## Creating a snapshot and using seek
|
|
320
358
|
|
|
321
359
|
You can create a snapshot to retain the existing backlog on a subscription. The
|
|
@@ -325,14 +363,14 @@ operation.
|
|
|
325
363
|
|
|
326
364
|
Later, you can use `seek` to reset the subscription's backlog to the snapshot.
|
|
327
365
|
|
|
328
|
-
(See {Google::Cloud::
|
|
329
|
-
Subscription#create_snapshot} and {Google::Cloud::
|
|
366
|
+
(See {Google::Cloud::PubSub::Subscription#create_snapshot
|
|
367
|
+
Subscription#create_snapshot} and {Google::Cloud::PubSub::Subscription#seek
|
|
330
368
|
Subscription#seek})
|
|
331
369
|
|
|
332
370
|
```ruby
|
|
333
371
|
require "google/cloud/pubsub"
|
|
334
372
|
|
|
335
|
-
pubsub = Google::Cloud::
|
|
373
|
+
pubsub = Google::Cloud::PubSub.new
|
|
336
374
|
|
|
337
375
|
sub = pubsub.subscription "my-topic-sub"
|
|
338
376
|
|
|
@@ -348,13 +386,13 @@ sub.seek snapshot
|
|
|
348
386
|
|
|
349
387
|
A subscriber object can be created using `listen`, which streams messages from
|
|
350
388
|
the backend and processes them as they are received. (See
|
|
351
|
-
{Google::Cloud::
|
|
352
|
-
{Google::Cloud::
|
|
389
|
+
{Google::Cloud::PubSub::Subscription#listen Subscription#listen} and
|
|
390
|
+
{Google::Cloud::PubSub::Subscriber Subscriber})
|
|
353
391
|
|
|
354
392
|
```ruby
|
|
355
393
|
require "google/cloud/pubsub"
|
|
356
394
|
|
|
357
|
-
pubsub = Google::Cloud::
|
|
395
|
+
pubsub = Google::Cloud::PubSub.new
|
|
358
396
|
|
|
359
397
|
sub = pubsub.subscription "my-topic-sub"
|
|
360
398
|
|
|
@@ -378,7 +416,7 @@ messages.
|
|
|
378
416
|
```ruby
|
|
379
417
|
require "google/cloud/pubsub"
|
|
380
418
|
|
|
381
|
-
pubsub = Google::Cloud::
|
|
419
|
+
pubsub = Google::Cloud::PubSub.new
|
|
382
420
|
|
|
383
421
|
sub = pubsub.subscription "my-topic-sub"
|
|
384
422
|
|
|
@@ -395,7 +433,7 @@ subscriber.start
|
|
|
395
433
|
## Working Across Projects
|
|
396
434
|
|
|
397
435
|
All calls to the Pub/Sub service use the same project and credentials provided
|
|
398
|
-
to the {Google::Cloud::
|
|
436
|
+
to the {Google::Cloud::PubSub.new PubSub.new} method. However, it is common to
|
|
399
437
|
reference topics or subscriptions in other projects, which can be achieved by
|
|
400
438
|
using the `project` option. The main credentials must have permissions to the
|
|
401
439
|
topics and subscriptions in other projects.
|
|
@@ -403,7 +441,7 @@ topics and subscriptions in other projects.
|
|
|
403
441
|
```ruby
|
|
404
442
|
require "google/cloud/pubsub"
|
|
405
443
|
|
|
406
|
-
pubsub = Google::Cloud::
|
|
444
|
+
pubsub = Google::Cloud::PubSub.new # my-project
|
|
407
445
|
|
|
408
446
|
# Get a topic in the current project
|
|
409
447
|
my_topic = pubsub.topic "my-topic"
|
|
@@ -419,7 +457,7 @@ from a topic in another project:
|
|
|
419
457
|
```ruby
|
|
420
458
|
require "google/cloud/pubsub"
|
|
421
459
|
|
|
422
|
-
pubsub = Google::Cloud::
|
|
460
|
+
pubsub = Google::Cloud::PubSub.new # my-project
|
|
423
461
|
|
|
424
462
|
# Get a topic in another project
|
|
425
463
|
topic = pubsub.topic "other-topic", project: "other-project-id"
|