superbolt 0.5.5 → 0.5.6

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: 234d0975ce1b95e327ebefdd7f023a3ae9e36864
4
- data.tar.gz: 86187f0b44f54b22365dfab163d5384036e1a670
3
+ metadata.gz: 415111f64ddbfb854cc45718278e4d04dcc9629d
4
+ data.tar.gz: 1c5b6f516d6b51a2b217d9288f64281ed40098d2
5
5
  SHA512:
6
- metadata.gz: f9d41cf6285e5b4853813eed6befe9c150cf83efbab3c882cd2c162a6edf7ab99ffa52611a75d38b898fc69ff76db3d27427bb6de8ff106ce9f09d45a2a053c3
7
- data.tar.gz: 66f8359c9a4b88ab9997c2c1ea66d1281fd51f9a857777b102e63fc9f1b3d3a6e078e726441ffdb01bd628d8b21f873e58491c8064442e404b414cb8afd98b64
6
+ metadata.gz: b007c47e99e43af1d766eb72ae36c64c9dd0a95d85b3702551151253e1f7ac3c50f1a2fd7d0c39e4ed61e999fd2106ce3585e24ee0e410a764bda42f257b2c19
7
+ data.tar.gz: 5de3ea41e8724daf828d2038137ab7840c73ccaf3235da65c91d06560f4167a477714929935b61f35eb15c16249863e5c4521de5e72dac18b0d9446fac84f840
data/Rakefile CHANGED
@@ -1 +1,23 @@
1
1
  require "bundler/gem_tasks"
2
+ require "superbolt/tasks"
3
+
4
+
5
+ # This one is for locally testing your crazy ideas
6
+ task :environment do
7
+ class MySleeperCell < Superbolt::MessageHandler
8
+ def perform
9
+ sleep(rand(10))
10
+ end
11
+ end
12
+
13
+ Superbolt.config = {
14
+ connection_params: {
15
+ host: '127.0.0.1',
16
+ heartbeat: 1,
17
+ }
18
+ }
19
+ Superbolt.app_name = 'food'
20
+ Superbolt::Router.routes = {
21
+ 'do-it' => 'MySleeperCell'
22
+ }
23
+ end
data/lib/superbolt/app.rb CHANGED
@@ -7,8 +7,8 @@ module Superbolt
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
11
+ @runner_type = options[:runner] || :default
12
12
  end
13
13
 
14
14
  def name
@@ -25,7 +25,7 @@ module Superbolt
25
25
  end
26
26
 
27
27
  def connection
28
- @connection ||= Connection::App.new(name, config)
28
+ @connection ||= Connection::Queue.new(name, config)
29
29
  end
30
30
 
31
31
  delegate :close, :closing, :exclusive?, :durable?, :auto_delete?,
@@ -42,15 +42,6 @@ module Superbolt
42
42
 
43
43
  def run(&block)
44
44
  EventMachine.run do
45
- queue.channel.auto_recovery = true
46
-
47
- # LShift came up with this solution, which helps reconnect when
48
- # a process runs longer than the heartbeat (and therefore disconnects)
49
- queue.channel.connection.on_tcp_connection_loss do |conn, settings|
50
- puts 'Lost TCP connection, reconnecting'
51
- conn.reconnect(false, 2)
52
- end
53
-
54
45
  runner_class.new(queue, error_queue, logger, block).run
55
46
 
56
47
  quit_subscriber_queue.subscribe do |message|
@@ -5,8 +5,9 @@ module Superbolt
5
5
  @connection ||= Adapter::Bunny.new(config)
6
6
  end
7
7
 
8
- def close
8
+ def close(&block)
9
9
  connection.close
10
+ block.call if block
10
11
  @connection = nil
11
12
  @q = nil
12
13
  end
@@ -21,6 +22,10 @@ module Superbolt
21
22
  q # to make sure it is connected
22
23
  connection.exchange
23
24
  end
25
+
26
+ def qq
27
+ @qq ||= connection.queue("#{name}.quit", self.class.default_options)
28
+ end
24
29
  end
25
30
  end
26
31
  end
@@ -21,7 +21,7 @@ module Superbolt
21
21
 
22
22
  def perform
23
23
  if handler_class
24
- handler_class.new(arguments, logger).perform
24
+ handler_class.new(arguments, logger).perform
25
25
  else
26
26
  logger.warn "No Superbolt route for event: '#{event}'"
27
27
  end
@@ -11,12 +11,14 @@ module Superbolt
11
11
  end
12
12
 
13
13
  def subscribe
14
- queue.subscribe(ack: ack) do |metadata, payload|
15
- message = IncomingMessage.new(metadata, payload, channel)
16
- processor = Processor.new(message, logger, &block)
14
+ queue.subscribe(ack: ack) do |delivery_info, metadata, payload|
15
+
16
+ message = Superbolt::IncomingMessage.new(delivery_info, payload, channel)
17
+ processor = Superbolt::Processor.new(message, logger, &block)
17
18
  unless processor.perform
18
19
  on_error(message.parse, processor.exception)
19
20
  end
21
+
20
22
  message.ack if ack
21
23
  end
22
24
  end
@@ -2,17 +2,17 @@ module Superbolt
2
2
  module Runner
3
3
  class Pop < Base
4
4
  attr_reader :message
5
-
5
+
6
6
  def run
7
7
  EventMachine.add_periodic_timer(0.01) do
8
- next if message
8
+ next unless queue.message_count > 0
9
9
 
10
- queue.pop do |metadata, payload|
11
- @message = IncomingMessage.new(metadata, payload, channel)
12
- processor = Processor.new(message, logger, &block)
13
10
 
11
+ queue.pop do |delivery_info, metadata, payload|
12
+ @message = IncomingMessage.new(delivery_info, payload, channel)
13
+ processor = Processor.new(message, logger, &block)
14
14
  unless processor.perform
15
- on_error(message.parse, processor.exception)
15
+ on_error(message.parse, processor.exception) if message.parse
16
16
  end
17
17
  @message = nil
18
18
  end
@@ -1,3 +1,3 @@
1
1
  module Superbolt
2
- VERSION = "0.5.5"
2
+ VERSION = "0.5.6"
3
3
  end
@@ -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
@@ -5,7 +5,7 @@ describe Superbolt::App do
5
5
  Superbolt::App.new(name, {
6
6
  env: env,
7
7
  logger: logger,
8
- runner: runner_type
8
+ config: double('config', runner_type: runner_type, connection_params: true)
9
9
  })
10
10
  }
11
11
 
@@ -23,6 +23,7 @@ describe Superbolt::App do
23
23
  error_queue.clear
24
24
  end
25
25
 
26
+
26
27
  shared_examples 'app' do
27
28
  it "shuts down with any message to the quit queue" do
28
29
  queue.push({please: 'stop'})
@@ -63,7 +64,6 @@ describe Superbolt::App do
63
64
  queue.size.should == 0
64
65
  end
65
66
 
66
-
67
67
  it "passes a logger to the block" do
68
68
  mock_logger = double
69
69
  app.logger = mock_logger
@@ -0,0 +1,9 @@
1
+ module EM
2
+ def self.defer(&block)
3
+ block.call
4
+ end
5
+
6
+ def self.next_tick(&block)
7
+ block.call
8
+ end
9
+ end
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.5
4
+ version: 0.5.6
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-19 00:00:00.000000000 Z
11
+ date: 2014-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -176,6 +176,7 @@ files:
176
176
  - spec/spec_helper.rb
177
177
  - spec/superbolt_spec.rb
178
178
  - spec/support/commodore.jpg
179
+ - spec/support/em_mocking.rb
179
180
  - spec/support/queue_helpers.rb
180
181
  - superbolt.gemspec
181
182
  homepage: ''
@@ -198,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
199
  version: '0'
199
200
  requirements: []
200
201
  rubyforge_project:
201
- rubygems_version: 2.0.2
202
+ rubygems_version: 2.2.2
202
203
  signing_key:
203
204
  specification_version: 4
204
205
  summary: Superbolt is a gem that makes SOA intra-app communication easy, via RabbitMQ
@@ -215,5 +216,5 @@ test_files:
215
216
  - spec/spec_helper.rb
216
217
  - spec/superbolt_spec.rb
217
218
  - spec/support/commodore.jpg
219
+ - spec/support/em_mocking.rb
218
220
  - spec/support/queue_helpers.rb
219
- has_rdoc: