banter 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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