Skip to content

Commit

Permalink
add FastlyNsq.consumer_nsqds and FastlyNsq.producer_nsqds
Browse files Browse the repository at this point in the history
This commit does adds support for adding these to the FastlyNsq module
but does not use them in the messenger and producer classes
  • Loading branch information
leklund committed Mar 4, 2022
1 parent 07fc2f3 commit 62e9c65
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 6 deletions.
4 changes: 2 additions & 2 deletions .env
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
NSQD_TCP_ADDRESS=127.0.0.1:4150
NSQD_HTTP_ADDRESS=127.0.0.1:4151
NSQLOOKUPD_TCP_ADDRESS=127.0.0.1:4160
NSQLOOKUPD_HTTP_ADDRESS=127.0.0.1:4161
NSQD_CONSUMERS=127.0.0.1:4150
NSQD_PRODUCERS=127.0.0.1:4150
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -293,10 +293,10 @@ stock NSQ on OS X,
installed via Homebrew:

```shell
NSQD_TCP_ADDRESS='127.0.0.1:4150'
NSQD_HTTP_ADDRESS='127.0.0.1:4151'
NSQLOOKUPD_TCP_ADDRESS='127.0.0.1:4160'
NSQLOOKUPD_HTTP_ADDRESS='127.0.0.1:4161, 10.1.1.101:4161'
NSQD_CONSUMERS='127.0.0.1:4150'
NSQD_PRODUCERS='127.0.0.1:4150'
```

See the [`.sample.env`](examples/.sample.env) file
Expand Down
39 changes: 38 additions & 1 deletion lib/fastly_nsq.rb
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,44 @@ def max_processing_pool_threads
# Return an array of NSQ lookupd http addresses sourced from ENV['NSQLOOKUPD_HTTP_ADDRESS']
# @return [Array<String>] list of nsqlookupd http addresses
def lookupd_http_addresses
ENV.fetch("NSQLOOKUPD_HTTP_ADDRESS").split(",").map(&:strip)
@lookups ||= ENV.fetch("NSQLOOKUPD_HTTP_ADDRESS").split(",").map(&:strip)
end

##
# Set the lookupd_http_addresses
# @param lookups [Array] List of http lookupd addresses to use.
def lookupd_http_addresses=(lookups)
@lookups = Array(lookups)
end

##
# Return an array of NSQD TCP addresses for NSQ consumers. Defaults to the value of ENV['NSQD_CONSUMERS'].
# ENV['NSQD_CONSUMERS'] must be a comma or space seperated string of NSQD addresses
# @return [Array<String>] list of nsqd addresses
def consumer_nsqds
@consumer_nsqds ||= ENV.fetch("NSQD_CONSUMERS").split(/, ?|\s+/).map(&:strip)
end

##
# Set the consumer_nsqd addresses
# @param nsqd_addresses [Array] List of consumer nsqd addresses to use
def consumer_nsqds=(nsqd_addresses)
@consumer_nsqds = Array(nsqd_addresses)
end

##
# Return an array of NSQD TCP addresses for NSQ producers. Defaults to the value of ENV['NSQD_PRODUCERS'].
# ENV['NSQD_PRODUCERS'] must be a comma or space seperated string of NSQD addresses
# @return [Array<String>] list of nsqd addresses
def producer_nsqds
@producer_nsqds ||= ENV.fetch("NSQD_PRODUCERS").split(/, ?|\s+/).map(&:strip)
end

##
# Set the producer_nsqd addresses
# @param nsqd_addresses [Array] List of producer nsqd addresses to use
def producer_nsqds=(nsqd_addresses)
@producer_nsqds = Array(nsqd_addresses)
end

# Register a block to run at a point in the lifecycle.
Expand Down
74 changes: 73 additions & 1 deletion spec/fastly_nsq_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,81 @@
end

describe "#lookupd_http_addresses" do
it "retreives NSQLOOKUPD_HTTP_ADDRESS" do
after { subject.instance_variable_set(:@lookups, nil) }

it "retreives NSQLOOKUPD_HTTP_ADDRESS by default" do
expect(subject.lookupd_http_addresses).to eq(ENV["NSQLOOKUPD_HTTP_ADDRESS"].split(","))
end

it "returns the value of the instance variable" do
subject.instance_variable_set(:@lookups, ["lolcathost"])

expect(subject.lookupd_http_addresses).to eq(["lolcathost"])
end
end

describe "#lookupd_http_addresses=" do
let!(:default_loookups) { subject.lookupd_http_addresses }
after { subject.lookupd_http_addresses = default_loookups }

it "allows the lookups to be set and retrieved" do
lookups = ["lolcathost:1234"]
subject.lookupd_http_addresses = lookups

expect(subject.lookupd_http_addresses).to eq lookups
end
end

describe "#producer_nsqds" do
after { subject.instance_variable_set(:@producer_nsqds, nil) }

it "retreives NSQD_PRODUCERS by default" do
expect(subject.producer_nsqds).to eq(ENV["NSQD_PRODUCERS"].split(","))
end

it "returns the value of the instance variable" do
subject.instance_variable_set(:@producer_nsqds, ["producer:1234"])

expect(subject.producer_nsqds).to eq(["producer:1234"])
end
end

describe "#producer_nsqds=" do
let!(:default_producers) { subject.producer_nsqds }
after { subject.producer_nsqds = default_producers }

it "allows the producer_nsqds to be set and retrieved" do
producers = ["producer:1234"]
subject.producer_nsqds = producers

expect(subject.producer_nsqds).to eq producers
end
end

describe "#consumer_nsqds" do
after { subject.instance_variable_set(:@consumer_nsqds, nil) }

it "retreives NSQD_CONSUMERS by default" do
expect(subject.consumer_nsqds).to eq(ENV["NSQD_CONSUMERS"].split(","))
end

it "returns the value of the instance variable" do
subject.instance_variable_set(:@consumer_nsqds, ["consumer:1234"])

expect(subject.consumer_nsqds).to eq(["consumer:1234"])
end
end

describe "#consumer_nsqds=" do
let!(:default_consumers) { subject.consumer_nsqds }
after { subject.consumer_nsqds = default_consumers }

it "allows the consumer_nsqds to be set and retrieved" do
consumers = ["consumer:1234"]
subject.consumer_nsqds = consumers

expect(subject.consumer_nsqds).to eq consumers
end
end

describe "#on" do
Expand Down

0 comments on commit 62e9c65

Please sign in to comment.