fastly_nsq 0.13.2 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.env +4 -0
- data/.overcommit.yml +3 -3
- data/.rubocop.yml +11 -1
- data/.travis.yml +8 -1
- data/Gemfile +9 -0
- data/README.md +52 -82
- data/Rakefile +2 -0
- data/bin/fastly_nsq +1 -0
- data/docker-compose.yml +23 -0
- data/examples/.sample.env +0 -3
- data/fastly_nsq.gemspec +7 -8
- data/lib/fastly_nsq.rb +44 -50
- data/lib/fastly_nsq/cli.rb +20 -14
- data/lib/fastly_nsq/consumer.rb +26 -30
- data/lib/fastly_nsq/feeder.rb +16 -0
- data/lib/fastly_nsq/http/nsqd.rb +7 -1
- data/lib/fastly_nsq/http/nsqlookupd.rb +1 -1
- data/lib/fastly_nsq/launcher.rb +31 -23
- data/lib/fastly_nsq/listener.rb +34 -103
- data/lib/fastly_nsq/manager.rb +48 -72
- data/lib/fastly_nsq/message.rb +2 -0
- data/lib/fastly_nsq/messenger.rb +5 -5
- data/lib/fastly_nsq/priority_queue.rb +12 -0
- data/lib/fastly_nsq/priority_thread_pool.rb +32 -0
- data/lib/fastly_nsq/producer.rb +52 -32
- data/lib/fastly_nsq/testing.rb +239 -0
- data/lib/fastly_nsq/tls_options.rb +2 -0
- data/lib/fastly_nsq/version.rb +3 -1
- data/spec/{lib/fastly_nsq/cli_spec.rb → cli_spec.rb} +2 -0
- data/spec/consumer_spec.rb +59 -0
- data/spec/fastly_nsq_spec.rb +72 -0
- data/spec/feeder_spec.rb +22 -0
- data/spec/{lib/fastly_nsq/http → http}/nsqd_spec.rb +1 -1
- data/spec/{lib/fastly_nsq/http → http}/nsqlookupd_spec.rb +1 -1
- data/spec/{lib/fastly_nsq/http_spec.rb → http_spec.rb} +3 -1
- data/spec/integration_spec.rb +48 -0
- data/spec/launcher_spec.rb +50 -0
- data/spec/listener_spec.rb +184 -0
- data/spec/manager_spec.rb +111 -0
- data/spec/matchers/delegate.rb +32 -0
- data/spec/{lib/fastly_nsq/message_spec.rb → message_spec.rb} +2 -0
- data/spec/{lib/fastly_nsq/messenger_spec.rb → messenger_spec.rb} +7 -5
- data/spec/priority_thread_pool_spec.rb +19 -0
- data/spec/producer_spec.rb +94 -0
- data/spec/spec_helper.rb +32 -28
- data/spec/support/http.rb +37 -0
- data/spec/support/webmock.rb +22 -0
- data/spec/{lib/fastly_nsq/tls_options_spec.rb → tls_options_spec.rb} +2 -0
- metadata +54 -96
- data/env_configuration_for_local_gem_tests.yml +0 -5
- data/example_config_class.rb +0 -20
- data/examples/Rakefile +0 -41
- data/lib/fastly_nsq/fake_backend.rb +0 -114
- data/lib/fastly_nsq/listener/config.rb +0 -35
- data/lib/fastly_nsq/rake_task.rb +0 -78
- data/lib/fastly_nsq/strategy.rb +0 -36
- data/spec/lib/fastly_nsq/consumer_spec.rb +0 -72
- data/spec/lib/fastly_nsq/fake_backend_spec.rb +0 -135
- data/spec/lib/fastly_nsq/fastly_nsq_spec.rb +0 -10
- data/spec/lib/fastly_nsq/launcher_spec.rb +0 -56
- data/spec/lib/fastly_nsq/listener_spec.rb +0 -213
- data/spec/lib/fastly_nsq/manager_spec.rb +0 -127
- data/spec/lib/fastly_nsq/producer_spec.rb +0 -60
- data/spec/lib/fastly_nsq/rake_task_spec.rb +0 -142
- data/spec/lib/fastly_nsq/strategy_spec.rb +0 -36
- data/spec/lib/fastly_nsq_spec.rb +0 -18
- data/spec/support/env_helpers.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d4e06ecec388c8a7d3f403fbb38ec03788522f25464a6b4a46815ccc584ba613
|
4
|
+
data.tar.gz: '04392e44b547924dfcba6df02b26ac86bc5580c32d30eb6b6ca8ecab313c39d0'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de8962c909fd1cdd08c0182b4eac693c1d0dec1608c0c60826ace6232198d449e5780a2e4ca9f3aee9cdb0bbc6d73871fb25dabd8a419b62e9aaee65f4fbfdb9
|
7
|
+
data.tar.gz: b1bd13296fb6e13f285099374621c0af43485822b04eb3593ec5635f07fb6ff087aa304399b3f389de8b21ecba4304e16a38a716831cc084077fa29dcd5970ed
|
data/.env
ADDED
data/.overcommit.yml
CHANGED
@@ -27,8 +27,8 @@ CommitMsg:
|
|
27
27
|
description: 'Prevent empty commit messages'
|
28
28
|
enabled: true
|
29
29
|
TextWidth:
|
30
|
-
description: 'Ensure commit message subjects are <
|
30
|
+
description: 'Ensure commit message subjects are <72 chars'
|
31
31
|
enabled: true
|
32
32
|
description: 'Checking text width'
|
33
|
-
max_subject_width:
|
34
|
-
max_body_width:
|
33
|
+
max_subject_width: 72
|
34
|
+
max_body_width: 72
|
data/.rubocop.yml
CHANGED
@@ -5,7 +5,7 @@ AllCops:
|
|
5
5
|
- 'db/schema.rb'
|
6
6
|
- 'vendor/**/*'
|
7
7
|
- 'Gemfile'
|
8
|
-
TargetRubyVersion: 2.
|
8
|
+
TargetRubyVersion: 2.4
|
9
9
|
|
10
10
|
Layout/DotPosition:
|
11
11
|
Enabled: true
|
@@ -14,15 +14,25 @@ Layout/DotPosition:
|
|
14
14
|
- leading
|
15
15
|
- trailing
|
16
16
|
|
17
|
+
Lint/AmbiguousBlockAssociation:
|
18
|
+
Exclude:
|
19
|
+
- 'spec/**/*'
|
20
|
+
|
17
21
|
Lint/RescueWithoutErrorClass:
|
18
22
|
Enabled: false
|
19
23
|
|
20
24
|
Metrics/MethodLength:
|
21
25
|
Enabled: false
|
22
26
|
|
27
|
+
Metrics/AbcSize:
|
28
|
+
Enabled: false
|
29
|
+
|
23
30
|
Metrics/LineLength:
|
24
31
|
Enabled: false
|
25
32
|
|
33
|
+
Metrics/ParameterLists:
|
34
|
+
Enabled: false
|
35
|
+
|
26
36
|
Metrics/BlockLength:
|
27
37
|
ExcludedMethods: [describe, context, configure]
|
28
38
|
|
data/.travis.yml
CHANGED
@@ -1,11 +1,18 @@
|
|
1
1
|
language: ruby
|
2
2
|
cache: bundler
|
3
|
+
sudo: false
|
3
4
|
rvm:
|
4
|
-
- 2.2.4
|
5
5
|
- 2.3.5
|
6
6
|
- 2.4.2
|
7
|
+
- 2.5.0
|
7
8
|
script:
|
8
9
|
- bundle exec rake
|
10
|
+
services:
|
11
|
+
- docker
|
12
|
+
before_install:
|
13
|
+
- docker-compose up -d
|
14
|
+
before_script:
|
15
|
+
- gem update --system
|
9
16
|
notifications:
|
10
17
|
slack:
|
11
18
|
rooms:
|
data/Gemfile
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source 'https://rubygems.org'
|
2
4
|
|
3
5
|
gemspec
|
6
|
+
|
7
|
+
gem 'bundler-audit', '~> 0.5.0'
|
8
|
+
gem 'overcommit', '~> 0.32.0'
|
9
|
+
gem 'rake', '~> 11.1.2'
|
10
|
+
gem 'rdoc', '~> 4.2.2'
|
11
|
+
gem 'rubocop', '~> 0.51.0'
|
12
|
+
gem 'rubygems-tasks', '~> 0.2'
|
data/README.md
CHANGED
@@ -61,15 +61,39 @@ producer.write(message_data.to_json)
|
|
61
61
|
```
|
62
62
|
The mock/real strategy used
|
63
63
|
can be switched
|
64
|
-
by
|
65
|
-
to your application:
|
64
|
+
by requiring the test file and configuring the mode.
|
66
65
|
|
67
66
|
```ruby
|
68
|
-
|
69
|
-
|
67
|
+
require 'fastly_nsq/testing'
|
68
|
+
FastlyNsq::Testing.enabled? #=> true
|
69
|
+
FastlyNsq::Testing.disabled? #=> false
|
70
70
|
|
71
|
-
|
72
|
-
|
71
|
+
producer = FastlyNsq::Producer.new(topic: topic)
|
72
|
+
listener = FastlyNsq::Listener.new(topic: topic, channel: channel, processor: ->(m) { puts 'got: '+ m.body })
|
73
|
+
|
74
|
+
FastlyNsq::Testing.fake! # default, messages accumulate on the listeners
|
75
|
+
|
76
|
+
producer.write '{"foo":"bar"}'
|
77
|
+
listener.messages.size #=> 1
|
78
|
+
|
79
|
+
FastlyNsq::Testing.reset! # remove all accumulated messages
|
80
|
+
|
81
|
+
listener.messages.size #=> 0
|
82
|
+
|
83
|
+
producer.write '{"foo":"bar"}'
|
84
|
+
listener.messages.size #=> 1
|
85
|
+
|
86
|
+
listener.drain
|
87
|
+
# got: {"foo"=>"bar"}
|
88
|
+
listener.messages.size #=> 0
|
89
|
+
|
90
|
+
FastlyNsq::Testing.inline! # messages are processed as they are produced
|
91
|
+
producer.write '{"foo":"bar"}'
|
92
|
+
# got: {"foo"=>"bar"}
|
93
|
+
listener.messages.size #=> 0
|
94
|
+
|
95
|
+
FastlyNsq::Testing.disable! # do it live
|
96
|
+
FastlyNsq::Testing.enable! # re-enable testing mode
|
73
97
|
```
|
74
98
|
|
75
99
|
### `FastlyNsq::Consumer`
|
@@ -93,11 +117,6 @@ consumer.size #=> 0
|
|
93
117
|
consumer.terminate
|
94
118
|
```
|
95
119
|
|
96
|
-
As above,
|
97
|
-
the mock/real strategy used
|
98
|
-
can be switched by setting the
|
99
|
-
`FAKE_QUEUE` environment variable appropriately.
|
100
|
-
|
101
120
|
### `FastlyNsq::Listener`
|
102
121
|
|
103
122
|
To process the next message on the queue:
|
@@ -107,70 +126,49 @@ topic = 'user_created'
|
|
107
126
|
channel = 'my_consuming_service'
|
108
127
|
processor = MessageProcessor
|
109
128
|
|
110
|
-
FastlyNsq::Listener.new(topic: topic, channel: channel, processor: processor)
|
129
|
+
FastlyNsq::Listener.new(topic: topic, channel: channel, processor: processor)
|
111
130
|
```
|
112
131
|
|
113
|
-
This will
|
132
|
+
This will send messages through `FastlyNsq.manager.pool`
|
114
133
|
off of the queue
|
115
134
|
and send the JSON text body
|
116
|
-
to `MessageProcessor.
|
135
|
+
to `MessageProcessor.call(message)`.
|
117
136
|
|
118
|
-
|
137
|
+
Specify a topic priority by providing a number (default is 0)
|
119
138
|
|
120
139
|
```ruby
|
121
140
|
topic = 'user_created'
|
122
141
|
channel = 'my_consuming_service'
|
123
142
|
processor = MessageProcessor
|
143
|
+
priority = 1 # a little higher
|
124
144
|
|
125
|
-
FastlyNsq::Listener.new(topic: topic, channel: channel, processor: processor)
|
145
|
+
FastlyNsq::Listener.new(topic: topic, channel: channel, processor: processor, priority: priority)
|
126
146
|
```
|
127
147
|
|
128
|
-
|
129
|
-
there is a new message on the queue,
|
130
|
-
pop the next message
|
131
|
-
off of the queue
|
132
|
-
and send it to `MessageProcessor.process(message_body, topic)`.
|
133
|
-
|
134
|
-
### `FastlyNsq::RakeTask`
|
148
|
+
### `FastlyNsq::CLI`
|
135
149
|
|
136
150
|
To help facilitate running the `FastlyNsq::Listener` in a blocking fashion
|
137
|
-
outside your application, a
|
138
|
-
|
139
|
-
The task will listen
|
140
|
-
to all specified topics,
|
141
|
-
each in a separate thread.
|
151
|
+
outside your application, a `CLI` and bin script [`fastly_nsq`](bin/fastly_nsq)
|
152
|
+
are provided.
|
142
153
|
|
143
|
-
This
|
154
|
+
This can be setup ahead of time by calling `FastlyNsq.configure` and passing block.
|
144
155
|
|
145
|
-
Using a block:
|
146
156
|
```ruby
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
}
|
157
|
+
# config/fastly_nsq.rb
|
158
|
+
FastlyNsq.configure do |config|
|
159
|
+
config.channel = 'fnsq'
|
160
|
+
config.logger = Logger.new
|
161
|
+
config.preprocessor = ->(_) { FastlyNsq.logger.info 'PREPROCESSESES' }
|
162
|
+
|
163
|
+
lc.listen 'posts', ->(m) { puts "posts: #{m.body}" }
|
164
|
+
lc.listen 'blogs', ->(m) { puts "blogs: #{m.body}" }, priority: 3
|
154
165
|
end
|
155
166
|
```
|
156
167
|
|
157
|
-
The task can also define a `call`-able "preprocessor" (called before any `Processor.process`) and a custom `logger`.
|
158
|
-
|
159
|
-
See the [`Rakefile`](examples/Rakefile) file
|
160
|
-
for more detail.
|
161
|
-
|
162
|
-
### `FastlyNsq::CLI`
|
163
|
-
|
164
|
-
To help facilitate running the `FastlyNsq::Listener` in a blocking fashion
|
165
|
-
outside your application, a `CLI` and bin script [`fastly_nsq`](bin/fastly_nsq)
|
166
|
-
are provided.
|
167
|
-
|
168
|
-
This can be setup ahead of time by calling `FastlyNsq.configure` and passing
|
169
|
-
block. An exmaple of this can be found here: [`Example Config`](exmaple_config_class.rb)
|
170
|
-
|
171
168
|
An example of using the cli:
|
169
|
+
|
172
170
|
```bash
|
173
|
-
./bin/fastly_nsq -r
|
171
|
+
./bin/fastly_nsq -r config/fastly_nsq.rb -L ./test.log -P ./fastly_nsq.pid -v -d -t 4 -c 10
|
174
172
|
```
|
175
173
|
|
176
174
|
### `FastlyNsq::Messenger`
|
@@ -178,13 +176,13 @@ An example of using the cli:
|
|
178
176
|
Wrapper around a producer for sending messages and persisting producer objects.
|
179
177
|
|
180
178
|
```ruby
|
181
|
-
FastlyNsq::Messenger.deliver(message: msg,
|
179
|
+
FastlyNsq::Messenger.deliver(message: msg, topic: 'my_topic', originating_service: 'my service')
|
182
180
|
```
|
183
181
|
|
184
182
|
You can also optionally pass custom metadata.
|
185
183
|
|
186
184
|
```ruby
|
187
|
-
FastlyNsq::Messenger.deliver(message: msg,
|
185
|
+
FastlyNsq::Messenger.deliver(message: msg, topic: 'my_topic', originating_service: 'my service', meta: { test: 'test' })
|
188
186
|
```
|
189
187
|
|
190
188
|
This will use a FastlyNsq::Producer for the given topic or create on if it isn't
|
@@ -282,34 +280,6 @@ NSQLOOKUPD_HTTP_ADDRESS='127.0.0.1:4161, 10.1.1.101:4161'
|
|
282
280
|
See the [`.sample.env`](examples/.sample.env) file
|
283
281
|
for more detail.
|
284
282
|
|
285
|
-
### Testing Against the Fake
|
286
|
-
|
287
|
-
In the gem's test suite,
|
288
|
-
the fake message queue is used.
|
289
|
-
|
290
|
-
If you would like to force
|
291
|
-
use of the real NSQ adapter,
|
292
|
-
ensure `FAKE_QUEUE` is set to `false`.
|
293
|
-
|
294
|
-
When you are developing your application,
|
295
|
-
it is recommended to
|
296
|
-
start by using the fake queue:
|
297
|
-
|
298
|
-
```shell
|
299
|
-
FAKE_QUEUE=true
|
300
|
-
```
|
301
|
-
|
302
|
-
Also be sure call
|
303
|
-
`FakeBackend.reset!`
|
304
|
-
before each test in your app to ensure
|
305
|
-
there are no leftover messages.
|
306
|
-
|
307
|
-
Also note that during gem tests,
|
308
|
-
we are aliasing `MessageProcessor` to `SampleMessageProcessor`.
|
309
|
-
You can also refer to the latter
|
310
|
-
as an example of how
|
311
|
-
you might write your own processor.
|
312
|
-
|
313
283
|
## Contributors
|
314
284
|
|
315
285
|
* Adarsh Pandit ([@adarsh](https://github.com/adarsh))
|
data/Rakefile
CHANGED
data/bin/fastly_nsq
CHANGED
data/docker-compose.yml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
version: '3'
|
2
|
+
services:
|
3
|
+
nsqlookupd:
|
4
|
+
image: nsqio/nsq
|
5
|
+
command: /nsqlookupd
|
6
|
+
ports:
|
7
|
+
- "4160:4160"
|
8
|
+
- "4161:4161"
|
9
|
+
nsqd:
|
10
|
+
image: nsqio/nsq
|
11
|
+
command: /nsqd --lookupd-tcp-address=nsqlookupd:4160 --broadcast-address localhost
|
12
|
+
depends_on:
|
13
|
+
- nsqlookupd
|
14
|
+
ports:
|
15
|
+
- "4150:4150"
|
16
|
+
- "4151:4151"
|
17
|
+
nsqadmin:
|
18
|
+
image: nsqio/nsq
|
19
|
+
command: /nsqadmin --lookupd-http-address=nsqlookupd:4161
|
20
|
+
depends_on:
|
21
|
+
- nsqlookupd
|
22
|
+
ports:
|
23
|
+
- "4171:4171"
|
data/examples/.sample.env
CHANGED
@@ -11,6 +11,3 @@ NSQD_HTTP_ADDRESS='127.0.0.1:4151'
|
|
11
11
|
NSQLOOKUPD_TCP_ADDRESS='127.0.0.1:4160'
|
12
12
|
## NSQLOOKUPD_HTTP_ADDRESS can be a single address or a comma seperated list
|
13
13
|
NSQLOOKUPD_HTTP_ADDRESS='127.0.0.1:4161, 10.0.0.101:4161'
|
14
|
-
|
15
|
-
# Uncomment to test against a live queue
|
16
|
-
#LIVE_QUEUE=true
|
data/fastly_nsq.gemspec
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
lib = File.expand_path('../lib', __FILE__)
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
5
|
require 'fastly_nsq/version'
|
@@ -20,16 +22,13 @@ Gem::Specification.new do |gem|
|
|
20
22
|
|
21
23
|
gem.add_development_dependency 'awesome_print', '~> 1.6'
|
22
24
|
gem.add_development_dependency 'bundler', '~> 1.12'
|
23
|
-
gem.add_development_dependency 'bundler-audit', '~> 0.5.0'
|
24
25
|
gem.add_development_dependency 'dotenv'
|
25
|
-
gem.add_development_dependency 'overcommit', '~> 0.32.0'
|
26
26
|
gem.add_development_dependency 'pry-byebug', '~> 3.3'
|
27
|
-
gem.add_development_dependency '
|
28
|
-
gem.add_development_dependency '
|
29
|
-
gem.add_development_dependency '
|
30
|
-
gem.add_development_dependency 'rubocop', '~> 0.51.0'
|
31
|
-
gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
|
32
|
-
gem.add_development_dependency 'webmock'
|
27
|
+
gem.add_development_dependency 'rspec', '~> 3.4'
|
28
|
+
gem.add_development_dependency 'rspec-eventually', '0.2'
|
29
|
+
gem.add_development_dependency 'webmock', '~> 3.0'
|
33
30
|
|
31
|
+
gem.add_dependency 'concurrent-ruby', '~> 1.0'
|
34
32
|
gem.add_dependency 'nsq-ruby', '~> 2.0', '>= 2.0.5'
|
33
|
+
gem.add_dependency 'priority_queue_cxx', '~> 0.3'
|
35
34
|
end
|
data/lib/fastly_nsq.rb
CHANGED
@@ -1,62 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'nsq'
|
2
|
-
require '
|
3
|
-
require '
|
4
|
-
require '
|
5
|
-
require '
|
6
|
-
require '
|
7
|
-
require 'fastly_nsq/producer'
|
8
|
-
require 'fastly_nsq/strategy'
|
9
|
-
require 'fastly_nsq/tls_options'
|
10
|
-
require 'fastly_nsq/version'
|
4
|
+
require 'concurrent'
|
5
|
+
require 'fc'
|
6
|
+
require 'set'
|
7
|
+
require 'logger'
|
8
|
+
require 'forwardable'
|
11
9
|
|
12
10
|
module FastlyNsq
|
13
|
-
|
11
|
+
NotConnectedError = Class.new(StandardError)
|
12
|
+
ConnectionFailed = Class.new(StandardError)
|
14
13
|
|
15
|
-
|
14
|
+
class << self
|
15
|
+
attr_accessor :channel, :preprocessor
|
16
|
+
attr_writer :logger
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
def logger=(logger)
|
22
|
-
strategy.logger = logger
|
23
|
-
end
|
18
|
+
def listen(topic, processor, **options)
|
19
|
+
FastlyNsq::Listener.new(topic: topic, processor: processor, **options)
|
20
|
+
end
|
24
21
|
|
25
|
-
|
26
|
-
|
27
|
-
|
22
|
+
def logger
|
23
|
+
@logger ||= Logger.new(nil)
|
24
|
+
end
|
28
25
|
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
def configure
|
27
|
+
yield self
|
28
|
+
end
|
32
29
|
|
33
|
-
|
34
|
-
|
35
|
-
|
30
|
+
def manager
|
31
|
+
@manager ||= FastlyNsq::Manager.new
|
32
|
+
end
|
36
33
|
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
def manager=(manager)
|
35
|
+
@manager&.transfer(manager)
|
36
|
+
@manager = manager
|
37
|
+
end
|
40
38
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
def configure
|
46
|
-
yield self
|
47
|
-
end
|
48
|
-
|
49
|
-
def topic_map
|
50
|
-
@listener_config.topic_map
|
51
|
-
end
|
52
|
-
|
53
|
-
def listener_config
|
54
|
-
@listener_config ||= FastlyNsq::Listener::Config.new
|
55
|
-
yield @listener_config if block_given?
|
56
|
-
@listener_config
|
57
|
-
end
|
58
|
-
|
59
|
-
def reset_config
|
60
|
-
@listener_config = nil
|
39
|
+
def lookupd_http_addresses
|
40
|
+
ENV.fetch('NSQLOOKUPD_HTTP_ADDRESS').split(',').map(&:strip)
|
41
|
+
end
|
61
42
|
end
|
62
43
|
end
|
44
|
+
|
45
|
+
require 'fastly_nsq/consumer'
|
46
|
+
require 'fastly_nsq/feeder'
|
47
|
+
require 'fastly_nsq/launcher'
|
48
|
+
require 'fastly_nsq/listener'
|
49
|
+
require 'fastly_nsq/manager'
|
50
|
+
require 'fastly_nsq/message'
|
51
|
+
require 'fastly_nsq/messenger'
|
52
|
+
require 'fastly_nsq/priority_queue'
|
53
|
+
require 'fastly_nsq/priority_thread_pool'
|
54
|
+
require 'fastly_nsq/producer'
|
55
|
+
require 'fastly_nsq/tls_options'
|
56
|
+
require 'fastly_nsq/version'
|