superbolt 0.5.2 → 0.5.3
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 +4 -4
- data/lib/superbolt.rb +1 -0
- data/lib/superbolt/app.rb +5 -5
- data/lib/superbolt/config.rb +4 -0
- data/lib/superbolt/runner/active_record_deferrable.rb +13 -0
- data/lib/superbolt/runner/default.rb +12 -0
- data/lib/superbolt/version.rb +1 -1
- data/lib/tasks/superbolt.rake +1 -1
- data/spec/app_spec.rb +6 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b431fab064f963b74d22ee65e00ff416d9272241
|
4
|
+
data.tar.gz: b06b856a6793911ba2f2d225e681401951084493
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37f36e6ac9a18ab4318d2b57f91ff11576e61b32e56cfa13925fa89e786d7dd01ddb2ca470ed534acaaf7b43ad8b2d9443a9a891d46b1e9ab4f0665a338dfcee
|
7
|
+
data.tar.gz: 18f8123f5ce8aba012e1af2bc1ba64dd7f2ccd8ecc6b67f96b7bf54511a0729f294bbb6f8d376081a8b978bddf0e42da0acab27396abd82b1d7780bce682452a
|
data/lib/superbolt.rb
CHANGED
@@ -25,6 +25,7 @@ require "superbolt/runner/ack_one"
|
|
25
25
|
require "superbolt/runner/ack"
|
26
26
|
require "superbolt/runner/pop"
|
27
27
|
require "superbolt/runner/greedy"
|
28
|
+
require "superbolt/runner/active_record_deferrable"
|
28
29
|
|
29
30
|
require "superbolt/queue"
|
30
31
|
require "superbolt/incoming_message"
|
data/lib/superbolt/app.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
module Superbolt
|
2
2
|
class App
|
3
|
-
attr_reader :config, :env
|
3
|
+
attr_reader :config, :env
|
4
4
|
attr_accessor :logger
|
5
5
|
|
6
6
|
def initialize(name, options={})
|
7
7
|
@name = name
|
8
8
|
@env = options[:env] || Superbolt.env
|
9
9
|
@logger = options[:logger] || Logger.new($stdout)
|
10
|
-
@runner_type = options[:runner] || :default
|
11
10
|
@config = options[:config] || Superbolt.config
|
12
11
|
end
|
13
12
|
|
@@ -44,7 +43,7 @@ module Superbolt
|
|
44
43
|
EventMachine.run do
|
45
44
|
queue.channel.auto_recovery = true
|
46
45
|
|
47
|
-
# LShift came up with this solution, which helps reconnect when
|
46
|
+
# LShift came up with this solution, which helps reconnect when
|
48
47
|
# a process runs longer than the heartbeat (and therefore disconnects)
|
49
48
|
queue.channel.connection.on_tcp_connection_loss do |conn, settings|
|
50
49
|
puts 'Lost TCP connection, reconnecting'
|
@@ -60,7 +59,7 @@ module Superbolt
|
|
60
59
|
end
|
61
60
|
|
62
61
|
def runner_class
|
63
|
-
runner_map[runner_type] || default_runner
|
62
|
+
runner_map[config.runner_type] || default_runner
|
64
63
|
end
|
65
64
|
|
66
65
|
def runner_map
|
@@ -68,7 +67,8 @@ module Superbolt
|
|
68
67
|
pop: Runner::Pop,
|
69
68
|
ack_one: Runner::AckOne,
|
70
69
|
ack: Runner::Ack,
|
71
|
-
greedy: Runner::Greedy
|
70
|
+
greedy: Runner::Greedy,
|
71
|
+
ar_deferrable: Runner::ActiveRecordDeferrable
|
72
72
|
}
|
73
73
|
end
|
74
74
|
|
data/lib/superbolt/config.rb
CHANGED
@@ -14,7 +14,11 @@ module Superbolt
|
|
14
14
|
queue.subscribe(ack: ack) do |metadata, payload|
|
15
15
|
#Thanks again to LShift for this solution to long-running processes
|
16
16
|
#Defer keeps heartbeat running while the process finishes
|
17
|
+
|
18
|
+
before_fork
|
17
19
|
EM.defer do
|
20
|
+
after_fork
|
21
|
+
|
18
22
|
# this gets run on the thread pool
|
19
23
|
message = Superbolt::IncomingMessage.new(metadata, payload, channel)
|
20
24
|
processor = Superbolt::Processor.new(message, logger, &block)
|
@@ -35,6 +39,14 @@ module Superbolt
|
|
35
39
|
|
36
40
|
def prefetch
|
37
41
|
end
|
42
|
+
|
43
|
+
def before_fork
|
44
|
+
# Implement me in da subclass
|
45
|
+
end
|
46
|
+
|
47
|
+
def after_fork
|
48
|
+
# Implement me in da subclass
|
49
|
+
end
|
38
50
|
end
|
39
51
|
end
|
40
52
|
end
|
data/lib/superbolt/version.rb
CHANGED
data/lib/tasks/superbolt.rake
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# assumes an environment task that sets up your app environment
|
2
2
|
desc "worker that reads the queue and sends messages through the router as configured"
|
3
3
|
task :superbolt => :environment do
|
4
|
-
Superbolt::App.new(Superbolt.app_name).run do |message, logger|
|
4
|
+
Superbolt::App.new(Superbolt.app_name, {}).run do |message, logger|
|
5
5
|
Superbolt::Router.new(message, logger).perform
|
6
6
|
end
|
7
7
|
end
|
data/spec/app_spec.rb
CHANGED
@@ -104,6 +104,12 @@ describe Superbolt::App do
|
|
104
104
|
it_should_behave_like "app"
|
105
105
|
end
|
106
106
|
|
107
|
+
context 'when runner acknowledges one and uses activerecord deferrable' do
|
108
|
+
let(:runner_type) { :ar_deferrable }
|
109
|
+
|
110
|
+
it_should_behave_like "app"
|
111
|
+
end
|
112
|
+
|
107
113
|
context 'when runner acknowledges without a prefetch limit' do
|
108
114
|
let(:runner_type) { :ack }
|
109
115
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: superbolt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- socialchorus
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -156,6 +156,7 @@ files:
|
|
156
156
|
- lib/superbolt/router.rb
|
157
157
|
- lib/superbolt/runner/ack.rb
|
158
158
|
- lib/superbolt/runner/ack_one.rb
|
159
|
+
- lib/superbolt/runner/active_record_deferrable.rb
|
159
160
|
- lib/superbolt/runner/base.rb
|
160
161
|
- lib/superbolt/runner/default.rb
|
161
162
|
- lib/superbolt/runner/greedy.rb
|
@@ -199,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
200
|
version: '0'
|
200
201
|
requirements: []
|
201
202
|
rubyforge_project:
|
202
|
-
rubygems_version: 2.0.
|
203
|
+
rubygems_version: 2.0.2
|
203
204
|
signing_key:
|
204
205
|
specification_version: 4
|
205
206
|
summary: Superbolt is a gem that makes SOA intra-app communication easy, via RabbitMQ
|