sidekiq-limit_fetch 0.9 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -67,6 +67,12 @@ enable global mode by setting global option, eg:
67
67
  :global: true
68
68
  ```
69
69
 
70
+ or
71
+
72
+ ```ruby
73
+ Sidekiq.options[:global] = true
74
+ ```
75
+
70
76
 
71
77
  If you use strict queue ordering (it will be used if you don't specify queue weights)
72
78
  then you can set blocking status for queues. It means if a blocking
@@ -78,7 +84,7 @@ be ran. Eg,
78
84
  - a
79
85
  - b
80
86
  - c
81
- :limits:
87
+ :blocking:
82
88
  - b
83
89
  ```
84
90
 
@@ -9,6 +9,7 @@ class Sidekiq::LimitFetch
9
9
 
10
10
  set_selector options[:global]
11
11
  set_limits options[:limits]
12
+ set_blocks options[:blocking]
12
13
  end
13
14
 
14
15
  def acquire
@@ -16,7 +17,7 @@ class Sidekiq::LimitFetch
16
17
  .tap {|it| save it }
17
18
  .map {|it| "queue:#{it}" }
18
19
  end
19
-
20
+
20
21
  def release_except(full_name)
21
22
  @selector.release restore.delete_if {|name| full_name.to_s.include? name }
22
23
  end
@@ -28,10 +29,15 @@ class Sidekiq::LimitFetch
28
29
  end
29
30
 
30
31
  def set_limits(limits)
31
- ordered_queues.each do |name|
32
- Sidekiq::Queue[name].tap do |it|
33
- it.limit = (limits || {})[name]
34
- end
32
+ return unless limits
33
+ limits.each do |name, limit|
34
+ Sidekiq::Queue[name].limit = limit
35
+ end
36
+ end
37
+
38
+ def set_blocks(blocks)
39
+ blocks.to_a.each do |name|
40
+ Sidekiq::Queue[name].block
35
41
  end
36
42
  end
37
43
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = 'sidekiq-limit_fetch'
3
- gem.version = '0.9'
3
+ gem.version = '1.0'
4
4
  gem.authors = 'brainopia'
5
5
  gem.email = 'brainopia@evilmartians.com'
6
6
  gem.summary = 'Sidekiq strategy to support queue limits'
@@ -7,9 +7,14 @@ describe Sidekiq::LimitFetch::Queues do
7
7
  let(:limits) {{ 'queue1' => 3 }}
8
8
  let(:strict) { true }
9
9
  let(:global) { false }
10
+ let(:blocking) { nil }
10
11
 
11
12
  let(:options) do
12
- { queues: queues, limits: limits, strict: strict, global: global }
13
+ { queues: queues,
14
+ limits: limits,
15
+ strict: strict,
16
+ global: global,
17
+ blocking: blocking }
13
18
  end
14
19
 
15
20
  after(:each ) do
@@ -23,7 +28,7 @@ describe Sidekiq::LimitFetch::Queues do
23
28
  Sidekiq::Queue['queue2'].busy.should == 1
24
29
  end
25
30
 
26
- it 'should acquire blocking queues' do
31
+ it 'should acquire dynamically blocking queues' do
27
32
  subject.acquire
28
33
  Sidekiq::Queue['queue1'].busy.should == 1
29
34
  Sidekiq::Queue['queue2'].busy.should == 1
@@ -48,8 +53,18 @@ describe Sidekiq::LimitFetch::Queues do
48
53
  Sidekiq::Queue['queue1'].busy.should == 1
49
54
  Sidekiq::Queue['queue2'].busy.should == 0
50
55
  end
56
+
57
+ context 'blocking' do
58
+ let(:blocking) { %w(queue1) }
59
+
60
+ it 'should acquire blocking queues' do
61
+ 3.times { subject.acquire }
62
+ Sidekiq::Queue['queue1'].busy.should == 3
63
+ Sidekiq::Queue['queue2'].busy.should == 1
64
+ end
65
+ end
51
66
  end
52
-
67
+
53
68
  context 'without global flag' do
54
69
  it_should_behave_like :selector
55
70
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-limit_fetch
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.9'
4
+ version: '1.0'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -109,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
109
109
  version: '0'
110
110
  segments:
111
111
  - 0
112
- hash: -145279622185044901
112
+ hash: -2462116291235109509
113
113
  required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  none: false
115
115
  requirements:
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  version: '0'
119
119
  segments:
120
120
  - 0
121
- hash: -145279622185044901
121
+ hash: -2462116291235109509
122
122
  requirements: []
123
123
  rubyforge_project:
124
124
  rubygems_version: 1.8.24