job_reactor 0.5.1.beta2 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -20,7 +20,7 @@ They will block the reactor and break normal processing.
20
20
 
21
21
  If you can't divide 'THE BIG JOB' into 'small pieces' you shouldn't use JobReactor. See alternatives such [DelayedJob][4] or [Resque][1].
22
22
 
23
- __JobReactor is the right solution if you have thousands, millions, and, we hope:), billions relatively small jobs.__
23
+ __JobReactor is the right solution if you have thousands, millions, and, we hope, billions relatively small jobs.__
24
24
 
25
25
  Quick start
26
26
  ===========
@@ -35,7 +35,7 @@ In your main application:
35
35
  ``` ruby
36
36
  require 'job_reactor'
37
37
  JR.run do
38
- JR.start_distributor('localhost', 5000)
38
+ JR.start_distributor('localhost', 5000) #see documentation
39
39
  end
40
40
  sleep(1) until(JR.ready?)
41
41
 
@@ -64,7 +64,7 @@ JR.run! do
64
64
  :name => 'worker_1',
65
65
  :server => ['localhost', 5001],
66
66
  :distributors => [['localhost', 5000]]
67
- })
67
+ }) #see documentation
68
68
  end
69
69
  ```
70
70
  Run 'application.rb' in one terminal window and 'worker.rb' in another.
@@ -5,16 +5,15 @@ module JobReactor
5
5
  module Distributor
6
6
  extend self
7
7
 
8
- # Gets nodes
9
8
  # You can monitor available nodes connections in you application.
10
- # For example
11
- # EM::PeriodicTimer.new(10) { JR::Logger.log nodes}
9
+ # For example:
10
+ # EM::PeriodicTimer.new(10) { JR::Logger.log nodes}.
12
11
  #
13
12
  def nodes
14
13
  @@nodes ||= []
15
14
  end
16
15
 
17
- # Contains connections pool - all node connections
16
+ # Contains connections pool - all node connections.
18
17
  #
19
18
  def connections
20
19
  @@connections ||= []
@@ -24,7 +23,8 @@ module JobReactor
24
23
  @@connect_to || "#{@@host}:#{@@port}"
25
24
  end
26
25
 
27
- #Starts distributor on given hast and port
26
+ # Starts distributor on given hast and port.
27
+ # See JR.start_distributor documentation.
28
28
  #
29
29
  def start(host, port, opts = {})
30
30
  @@connect_to = opts[:connect_to] && opts[:connect_to].join(':')
@@ -34,9 +34,9 @@ module JobReactor
34
34
  EM.start_server(host, port, JobReactor::Distributor::Server)
35
35
  end
36
36
 
37
- # Tries to find available node connection
38
- # If it is distributor will send marshalled data
39
- # If get_connection returns nil distributor will try again after 1 second
37
+ # Tries to find available node connection.
38
+ # If it is distributor will send marshalled data.
39
+ # If get_connection returns nil distributor will try again after 1 second.
40
40
  #
41
41
  def send_data_to_node(hash)
42
42
  connection = get_connection(hash)
@@ -56,8 +56,8 @@ module JobReactor
56
56
 
57
57
  # Looks for available connection.
58
58
  # If job hash specified node, tries check if the node is available.
59
- # If not, returns nil or tries to find any other free node if :always_use_specified_node == true
60
- # If job hasn't any specified node, methods return any available connection or nil (and will be launched again in one second)
59
+ # If not, returns nil or tries to find any other free node if :always_use_specified_node == true.
60
+ # If job hasn't any specified node, methods return any available connection or nil (and will be launched again in one second).
61
61
  #
62
62
  def get_connection(hash)
63
63
  if hash['node']
@@ -39,6 +39,14 @@ module JobReactor
39
39
  # Parses jobs.
40
40
  # Requires storage.
41
41
  # Creates and start node.
42
+ # Options are:
43
+ # :storage - now available: 'memory_storage' and 'redis_storage';
44
+ # :name - uniq node name like 'my_favorite_memory_node';
45
+ # :server - address where node server starts (example: ['123.123.123.123', 1234];
46
+ # :distributors - address or addresses of distributor(s) node will try to connect (example: [['111.111.111.111', 5000], ['localhost', 5001]]);
47
+ # :connect_to - use this option if you have different ip-address to access your machine from outside world. Example (connect_to: ['213.122.132.231', 8000]).
48
+ # If you specify :connect_to option the connected distributor will use this host and port to connect the node.
49
+ # If not, distributor will use host and port from :server option.
42
50
  #
43
51
  def start_node(opts)
44
52
  parse_jobs
@@ -47,6 +55,12 @@ module JobReactor
47
55
  node.start
48
56
  end
49
57
 
58
+ # Starts distributor server on given host and port.
59
+ # If you have different ip-address to access your machine from outside world use additional option :connect_to.
60
+ # For example:
61
+ # JR.start_distributor('0.0.0.0', 5000, connect_to: ['123,223,234,213', 5000]).
62
+ # So the node will use '123,223,234,213:5000' to send the 'feedbacks' to distributor
63
+ #
50
64
  def start_distributor(host, port, opts = {})
51
65
  JR::Distributor.start(host, port, opts)
52
66
  end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: job_reactor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1.beta2
5
- prerelease: 6
4
+ version: 0.5.1
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Anton Mishchuk
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-06-15 00:00:00.000000000 Z
13
+ date: 2012-06-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: eventmachine
@@ -100,9 +100,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
100
100
  required_rubygems_version: !ruby/object:Gem::Requirement
101
101
  none: false
102
102
  requirements:
103
- - - ! '>'
103
+ - - ! '>='
104
104
  - !ruby/object:Gem::Version
105
- version: 1.3.1
105
+ version: '0'
106
106
  requirements: []
107
107
  rubyforge_project:
108
108
  rubygems_version: 1.8.24