banter 1.1.1 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7eddb3c0d8d9801ac79fe7b7ca04c7f892a4cc0a
4
- data.tar.gz: 03fd47b4fe7849b469ace3f1b94ca3640857cd6d
3
+ metadata.gz: 9f2b3a73cf906e381fe1ca04744d8417ec0ba26b
4
+ data.tar.gz: ef17591c856e22066c3731f5887b22b7a641ca39
5
5
  SHA512:
6
- metadata.gz: fb0cf4082a90fd66772bb400106d77a2898557984b67b25a2363234b2ee5959ea199b80b41397098dbb1488d449d6178268f6af24e48722c8a71716ddfe4c2f9
7
- data.tar.gz: f70da6ed9736961564bb996489927b4d5835005b11d57ac8c2ace0c11915747a63bcf1e244fb0f49549c91af72d7ec86537a365b00db6c282c00eb00ae75f2f9
6
+ metadata.gz: 0604404fa2508ca708f28e3e3fdb8dd9668820f1eb12a32bf6cd6e079c40028cc024347bd0076a88539a05157f34e5885b91b619a7f5d44dcc5e4e6a3cc47f7a
7
+ data.tar.gz: b6999995acd10379efaa21f3209053c2f44a5899653f6bb3c86720604ee0dc1415fed85488af3d9b0f38796223caf6ff6ef859bd7629aada42d683318fb6af37
@@ -10,13 +10,12 @@ module Banter
10
10
 
11
11
  attr_reader :worker_class
12
12
 
13
- def initialize(worker_class, request_key, queue_name, durable = true, topic = nil)
13
+ def initialize(worker_class, request_key, queue_name, durable = true, pool_size = 100, topic = nil)
14
14
  @topic = topic || Banter::Configuration.topic_prefix
15
15
  @request_key = request_key
16
16
  @worker_class = worker_class
17
- @durable = durable
18
17
  @queue_name = queue_name
19
- @subscriber = ::Banter::Server::RabbitMQSubscriber.new(@request_key, @queue_name, worker_class.queue_ttl, @durable, @topic)
18
+ @subscriber = ::Banter::Server::RabbitMQSubscriber.new(@request_key, @queue_name, worker_class.queue_ttl, durable, pool_size, @topic)
20
19
  end
21
20
 
22
21
  def start
@@ -7,11 +7,12 @@ module Banter
7
7
  attr_reader :channel
8
8
  attr_reader :ttl
9
9
 
10
- def initialize(routing_key, queue_name, ttl, durable = true, topic = Banter::Configuration.topic_prefix)
10
+ def initialize(routing_key, queue_name, ttl, durable = true, pool_size = 100, topic = Banter::Configuration.topic_prefix)
11
11
  @initial_key = routing_key
12
12
  @durable = durable
13
13
  @topic = topic
14
14
  @ttl = ttl
15
+ @pool_size = pool_size
15
16
 
16
17
  if @initial_key.present?
17
18
  @routing_key = "#{@topic}.#{@initial_key}.#"
@@ -40,18 +41,9 @@ module Banter
40
41
  queue_arguments["x-dead-letter-exchange"] = Configuration.dead_letter_queue if Configuration.dead_letter_queue.present?
41
42
  queue_arguments["x-message-ttl"] = ttl * 1000
42
43
 
43
- # FIX!!! -thl
44
- # Something is wrong with basic_qos because the server cannot be quickly bounced when this happens, and for messages to be
45
- # quickly picked up. It seems sporadic. It could be a timing thing but I am unsure.
46
- # Only grab 1 message at a time, otherwise, we will have to write some extra conditions to reject
47
- # all the other messages that they already pulled down, which then could make the subscriber
48
- # run out of memory, etc
49
- # @channel.basic_qos(1)
44
+ @channel.basic_qos(@pool_size)
50
45
 
51
- # Need to mark the queue as durable
52
46
  rabbit_queue = @channel.queue(@queue_name, durable: @durable, exclusive: false, arguments: queue_arguments)
53
- # rabbit_queue = @channel.queue(@queue_name, arguments: queue_arguments)
54
-
55
47
  @listener = rabbit_queue.bind(@exchange, routing_key: @routing_key, exclusive: false)
56
48
 
57
49
  # Parameters for subscribe that might be useful:
@@ -99,9 +99,10 @@ module Banter
99
99
  routing_key = subscriber.subscribed_key
100
100
  durable = subscriber.durable
101
101
  queue_name = subscriber.generated_queue_name(routing_key, application_name)
102
+ pool_size = Banter::Configuration.configuration[:pool_size] || 100
102
103
 
103
- STDOUT.puts "Setting up listener for request_key: #{routing_key} and queue:#{application_name}"
104
- ClientQueueListener.new(subscriber, routing_key, queue_name, durable)
104
+ STDOUT.puts "Setting up listener for request_key: #{routing_key} and queue:#{application_name} with qos setting: #{pool_size}"
105
+ ClientQueueListener.new(subscriber, routing_key, queue_name, durable, pool_size)
105
106
  end
106
107
  end
107
108
  end
@@ -1,3 +1,3 @@
1
1
  module Banter
2
- VERSION = "1.1.1"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -8,15 +8,32 @@ describe Banter::Server::SubscriberServer do
8
8
  let!(:application_name) { "testsubscriber" }
9
9
  let!(:durable) { true }
10
10
  describe '#set_workers' do
11
- before {
12
- Banter::Configuration.application_name = application_name
13
- allow(Banter::Server::ClientQueueListener).to receive(:new)
14
- subject.set_workers([MyTestSubscriber1, MyTestSubscriber2])
15
- }
16
-
17
- it "creates queue listeners" do
18
- expect(Banter::Server::ClientQueueListener).to have_received(:new).with(MyTestSubscriber1, "foo.bar.one", "foo.bar.one_#{application_name}", durable)
19
- expect(Banter::Server::ClientQueueListener).to have_received(:new).with(MyTestSubscriber2, "foo.bar.two", "foo.bar.two_#{application_name}", durable)
11
+ context "default config" do
12
+ before {
13
+ Banter::Configuration.application_name = application_name
14
+ allow(Banter::Server::ClientQueueListener).to receive(:new)
15
+ subject.set_workers([MyTestSubscriber1, MyTestSubscriber2])
16
+ }
17
+
18
+ it "creates queue listeners" do
19
+ expect(Banter::Server::ClientQueueListener).to have_received(:new).with(MyTestSubscriber1, "foo.bar.one", "foo.bar.one_#{application_name}", durable, 100)
20
+ expect(Banter::Server::ClientQueueListener).to have_received(:new).with(MyTestSubscriber2, "foo.bar.two", "foo.bar.two_#{application_name}", durable, 100)
21
+ end
22
+ end
23
+
24
+ context "set pool_size" do
25
+ before {
26
+ Banter::Configuration.application_name = application_name
27
+ allow(Banter::Server::ClientQueueListener).to receive(:new)
28
+ Banter::Configuration.configuration[:pool_size] = 200
29
+ subject.set_workers([MyTestSubscriber1, MyTestSubscriber2])
30
+ }
31
+
32
+ it "creates queue listeners" do
33
+ expect(Banter::Server::ClientQueueListener).to have_received(:new).with(MyTestSubscriber1, "foo.bar.one", "foo.bar.one_#{application_name}", durable, 200)
34
+ expect(Banter::Server::ClientQueueListener).to have_received(:new).with(MyTestSubscriber2, "foo.bar.two", "foo.bar.two_#{application_name}", durable, 200)
35
+ end
36
+
20
37
  end
21
38
  end
22
39
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: banter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Honest Company
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-09-18 00:00:00.000000000 Z
14
+ date: 2014-09-20 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler