toiler 0.3.6 → 0.4.0.beta1

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: 0ecb4ddc2f0165788a9bd382078331339bf47c99
4
- data.tar.gz: 6368cf4989ef308ef4bd5192f10effd40e959b87
3
+ metadata.gz: a4ced1103b95b851ceefc678c709faf6ed6f458e
4
+ data.tar.gz: ca7069d2a1ac054ea3bb7e5bb78c2effb8c08cfd
5
5
  SHA512:
6
- metadata.gz: de6ff36fe3a1794525ceeb374453aa311d1fc44861dd0cabf25e2d1a64822d0a869772fff47b48ebce867eee0835ffce5acbe700805740b9c15bec81900a0785
7
- data.tar.gz: 49bd75691c9b2a2908ee677ddd062f4bc2a765937538b60bc00b6ab0f83c6a6e46a2c8d0e699b84ebd4149c60ea8a7eff19e98c15f7aea15072ed4404e8d8267
6
+ metadata.gz: f070535678f3af853ad2835c42a69bf95e60cff53f137f7dd34b232f393df8d89b6b8e0679cc6999e9a3d14cdeac063d3676a9ca865357c07976c33fb5261aa1
7
+ data.tar.gz: a89273d951335f6b7916f19ca7f620365d2654228bd261a3ad41c3397034e40b76e429fc38c47facc90073044843de9ce3be0f17f4a904aeddd09554c74b0701
data/.gitignore CHANGED
@@ -1,35 +1,35 @@
1
- *.gem
2
- *.rbc
3
- /.config
4
- /coverage/
5
- /InstalledFiles
6
- /pkg/
7
- /spec/reports/
8
- /test/tmp/
9
- /test/version_tmp/
10
- /tmp/
11
-
12
- ## Specific to RubyMotion:
13
- .dat*
14
- .repl_history
15
- build/
16
-
17
- ## Documentation cache and generated files:
18
- /.yardoc/
19
- /_yardoc/
20
- /doc/
21
- /rdoc/
22
-
23
- ## Environment normalisation:
24
- /.bundle/
25
- /vendor/bundle
26
- /lib/bundler/man/
27
-
28
- # for a library or gem, you might want to ignore these files since the code is
29
- # intended to run in multiple environments; otherwise, check them in:
30
- # Gemfile.lock
31
- # .ruby-version
32
- # .ruby-gemset
33
-
34
- # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
35
- .rvmrc
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /test/tmp/
9
+ /test/version_tmp/
10
+ /tmp/
11
+
12
+ ## Specific to RubyMotion:
13
+ .dat*
14
+ .repl_history
15
+ build/
16
+
17
+ ## Documentation cache and generated files:
18
+ /.yardoc/
19
+ /_yardoc/
20
+ /doc/
21
+ /rdoc/
22
+
23
+ ## Environment normalisation:
24
+ /.bundle/
25
+ /vendor/bundle
26
+ /lib/bundler/man/
27
+
28
+ # for a library or gem, you might want to ignore these files since the code is
29
+ # intended to run in multiple environments; otherwise, check them in:
30
+ # Gemfile.lock
31
+ # .ruby-version
32
+ # .ruby-gemset
33
+
34
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
35
+ .rvmrc
data/.gitmodules CHANGED
@@ -1,4 +1,4 @@
1
- [submodule "celluloid-task-pooledfiber"]
2
- path = celluloid-task-pooledfiber
3
- url = git@github.com:celluloid/celluloid-task-pooledfiber.git
4
- branch = 0.2.0-prerelease
1
+ [submodule "celluloid-task-pooledfiber"]
2
+ path = celluloid-task-pooledfiber
3
+ url = git@github.com:celluloid/celluloid-task-pooledfiber.git
4
+ branch = 0.2.0-prerelease
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.2.2
1
+ 2.2.2
data/Gemfile CHANGED
@@ -1,9 +1,9 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'concurrent-ruby', '~> 1.0.0'
4
- gem 'concurrent-ruby-edge', '~> 0.2.0'
5
- gem 'aws-sdk', '~> 2.2'
6
-
7
- group :development do
8
- gem 'rubocop'
9
- end
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'concurrent-ruby', '~> 1.0.0'
4
+ gem 'concurrent-ruby-edge', '~> 0.2.0'
5
+ gem 'aws-sdk', '~> 2.2'
6
+
7
+ group :development do
8
+ gem 'rubocop'
9
+ end
data/Gemfile.lock CHANGED
@@ -1,41 +1,41 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- ast (2.2.0)
5
- aws-sdk (2.3.7)
6
- aws-sdk-resources (= 2.3.7)
7
- aws-sdk-core (2.3.7)
8
- jmespath (~> 1.0)
9
- aws-sdk-resources (2.3.7)
10
- aws-sdk-core (= 2.3.7)
11
- concurrent-ruby (1.0.2)
12
- concurrent-ruby-edge (0.2.2)
13
- concurrent-ruby (~> 1.0.2)
14
- jmespath (1.2.4)
15
- json_pure (>= 1.8.1)
16
- json_pure (1.8.3)
17
- parser (2.3.1.0)
18
- ast (~> 2.2)
19
- powerpack (0.1.1)
20
- rainbow (2.1.0)
21
- rubocop (0.40.0)
22
- parser (>= 2.3.1.0, < 3.0)
23
- powerpack (~> 0.1)
24
- rainbow (>= 1.99.1, < 3.0)
25
- ruby-progressbar (~> 1.7)
26
- unicode-display_width (~> 1.0, >= 1.0.1)
27
- ruby-progressbar (1.8.1)
28
- unicode-display_width (1.0.5)
29
-
30
- PLATFORMS
31
- ruby
32
- x64-mingw32
33
-
34
- DEPENDENCIES
35
- aws-sdk (~> 2.2)
36
- concurrent-ruby (~> 1.0.0)
37
- concurrent-ruby-edge (~> 0.2.0)
38
- rubocop
39
-
40
- BUNDLED WITH
41
- 1.11.2
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ ast (2.2.0)
5
+ aws-sdk (2.3.7)
6
+ aws-sdk-resources (= 2.3.7)
7
+ aws-sdk-core (2.3.7)
8
+ jmespath (~> 1.0)
9
+ aws-sdk-resources (2.3.7)
10
+ aws-sdk-core (= 2.3.7)
11
+ concurrent-ruby (1.0.2)
12
+ concurrent-ruby-edge (0.2.2)
13
+ concurrent-ruby (~> 1.0.2)
14
+ jmespath (1.2.4)
15
+ json_pure (>= 1.8.1)
16
+ json_pure (1.8.3)
17
+ parser (2.3.1.0)
18
+ ast (~> 2.2)
19
+ powerpack (0.1.1)
20
+ rainbow (2.1.0)
21
+ rubocop (0.40.0)
22
+ parser (>= 2.3.1.0, < 3.0)
23
+ powerpack (~> 0.1)
24
+ rainbow (>= 1.99.1, < 3.0)
25
+ ruby-progressbar (~> 1.7)
26
+ unicode-display_width (~> 1.0, >= 1.0.1)
27
+ ruby-progressbar (1.8.1)
28
+ unicode-display_width (1.0.5)
29
+
30
+ PLATFORMS
31
+ ruby
32
+ x64-mingw32
33
+
34
+ DEPENDENCIES
35
+ aws-sdk (~> 2.2)
36
+ concurrent-ruby (~> 1.0.0)
37
+ concurrent-ruby-edge (~> 0.2.0)
38
+ rubocop
39
+
40
+ BUNDLED WITH
41
+ 1.11.2
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
- Copyright (c) Sebastian Schepens
2
-
3
- Toiler is an Open Source project licensed under the terms of
4
- the LGPLv3 license. Please see <http://www.gnu.org/licenses/lgpl-3.0.html>
5
- for license text.
6
-
1
+ Copyright (c) Sebastian Schepens
2
+
3
+ Toiler is an Open Source project licensed under the terms of
4
+ the LGPLv3 license. Please see <http://www.gnu.org/licenses/lgpl-3.0.html>
5
+ for license text.
6
+
data/README.md CHANGED
@@ -1,125 +1,125 @@
1
- ##Toiler
2
- Toiler is a AWS SQS long-polling thread-based message processor.
3
- It's based on [shoryuken](https://github.com/phstc/shoryuken) but takes
4
- a different approach at loadbalancing and uses long-polling.
5
-
6
- ##Features
7
- ###Concurrency
8
- Toiler allows to specify the amount of processors (threads) that should be spawned for each queue.
9
- Instead of [shoryuken's](https://github.com/phstc/shoryuken) loadbalancing approach, Toiler delegates this work to the kernel scheduling threads.
10
-
11
- Because Toiler uses threads to provide concurrency, **each thread instatiates a new worker**, as it should be expected, so please **use class variables to store shared variables like clients**.
12
-
13
- ###Long-Polling
14
- A Fetcher thread is spawned for each queue.
15
- Fetchers are resposible for polling SQS and retreiving messages.
16
- They are optimised to not bring more messages than the amount of processors avaiable for such queue.
17
- By long-polling fetchers wait for a configurable amount of time for messages to become available on a single request, this prevents unneccesarilly requesting messages when there are none.
18
-
19
- ###Message Parsing
20
- Workers can configure a parser Class or Proc to parse an SQS message body before being processed.
21
-
22
- ###Batches
23
- Toiler allows a Worker to be able to receive a batch of messages instead of a single one.
24
-
25
- ###Auto Visibility Extension
26
- Toiler has the ability to automatically extend the visibility timeout of and SQS message to prevent the message from re-entering the queue if processing of such message is taking longer than the queue's visibility timeout.
27
-
28
- ##Instalation
29
-
30
- Add this line to your application's Gemfile:
31
-
32
- ```ruby
33
- gem 'toiler'
34
- ```
35
-
36
- And then execute:
37
-
38
- $ bundle
39
-
40
- Or install it yourself as:
41
-
42
- $ gem install toiler
43
-
44
- ## Usage
45
-
46
- ### Worker class
47
-
48
- ```ruby
49
- class MyWorker
50
- include Toiler::Worker
51
-
52
- toiler_options queue: 'default', concurrency: 5, auto_delete: true
53
- toiler_options parser: :json
54
-
55
- # toiler_options parser: ->(sqs_msg){ REXML::Document.new(sqs_msg.body) }
56
- # toiler_options parser: MultiJson
57
- # toiler_options auto_visibility_timeout: true
58
- # toiler_options batch: true
59
-
60
- #Example connection client that should be shared across all instances of MyWorker
61
- @@client = ConnectionClient.new
62
-
63
- def initialize
64
- @last_message = nil
65
- end
66
-
67
- def perform(sqs_msg, body)
68
- #Workers are thread safe, yay!
69
- #Each worker instance is assured to be processing only one message at a time
70
- @last_message = sqs_msg
71
- puts body
72
- end
73
- end
74
- ```
75
-
76
- ### Configuration
77
-
78
- ```yaml
79
- aws:
80
- access_key_id: ... # or <%= ENV['AWS_ACCESS_KEY_ID'] %>
81
- secret_access_key: ... # or <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
82
- region: us-east-1 # or <%= ENV['AWS_REGION'] %>
83
- wait: 20 # The time in seconds to wait for messages during long-polling
84
- ```
85
-
86
- ### Rails Integration
87
-
88
- You can tell Toiler to load your Rails application by passing the `-R` or `--rails` flag to the "toiler" command.
89
-
90
- If you load Rails, and assuming your workers are located in the `app/workers` directory, they will be auto-loaded. This means you don't need to require them explicitly with `-r`.
91
-
92
-
93
- ### Start Toiler
94
-
95
- ```shell
96
- bundle exec toiler -r worker.rb -C toiler.yml
97
- ```
98
-
99
- Other options:
100
-
101
- ```bash
102
- toiler --help
103
-
104
- -d, --daemon Daemonize process
105
- -r, --require [PATH|DIR] Location of the worker
106
- -C, --config PATH Path to YAML config file
107
- -R, --rails Load Rails
108
- -L, --logfile PATH Path to writable logfile
109
- -P, --pidfile PATH Path to pidfile
110
- -v, --verbose Print more verbose output
111
- -h, --help Show help
112
- ```
113
-
114
-
115
- ## Credits
116
-
117
- Much of the credit goes to [Pablo Cantero](https://github.com/phstc), creator of [Shoryuken](https://github.com/phstc/shoryuken), and [everybody who contributed to it](https://github.com/phstc/shoryuken/graphs/contributors).
118
-
119
- ## Contributing
120
-
121
- 1. Fork it ( https://github.com/sschepens/toiler/fork )
122
- 2. Create your feature branch (`git checkout -b my-new-feature`)
123
- 3. Commit your changes (`git commit -am 'Add some feature'`)
124
- 4. Push to the branch (`git push origin my-new-feature`)
125
- 5. Create a new Pull Request
1
+ ##Toiler
2
+ Toiler is a AWS SQS long-polling thread-based message processor.
3
+ It's based on [shoryuken](https://github.com/phstc/shoryuken) but takes
4
+ a different approach at loadbalancing and uses long-polling.
5
+
6
+ ##Features
7
+ ###Concurrency
8
+ Toiler allows to specify the amount of processors (threads) that should be spawned for each queue.
9
+ Instead of [shoryuken's](https://github.com/phstc/shoryuken) loadbalancing approach, Toiler delegates this work to the kernel scheduling threads.
10
+
11
+ Because Toiler uses threads to provide concurrency, **each thread instatiates a new worker**, as it should be expected, so please **use class variables to store shared variables like clients**.
12
+
13
+ ###Long-Polling
14
+ A Fetcher thread is spawned for each queue.
15
+ Fetchers are resposible for polling SQS and retreiving messages.
16
+ They are optimised to not bring more messages than the amount of processors avaiable for such queue.
17
+ By long-polling fetchers wait for a configurable amount of time for messages to become available on a single request, this prevents unneccesarilly requesting messages when there are none.
18
+
19
+ ###Message Parsing
20
+ Workers can configure a parser Class or Proc to parse an SQS message body before being processed.
21
+
22
+ ###Batches
23
+ Toiler allows a Worker to be able to receive a batch of messages instead of a single one.
24
+
25
+ ###Auto Visibility Extension
26
+ Toiler has the ability to automatically extend the visibility timeout of and SQS message to prevent the message from re-entering the queue if processing of such message is taking longer than the queue's visibility timeout.
27
+
28
+ ##Instalation
29
+
30
+ Add this line to your application's Gemfile:
31
+
32
+ ```ruby
33
+ gem 'toiler'
34
+ ```
35
+
36
+ And then execute:
37
+
38
+ $ bundle
39
+
40
+ Or install it yourself as:
41
+
42
+ $ gem install toiler
43
+
44
+ ## Usage
45
+
46
+ ### Worker class
47
+
48
+ ```ruby
49
+ class MyWorker
50
+ include Toiler::Worker
51
+
52
+ toiler_options queue: 'default', concurrency: 5, auto_delete: true
53
+ toiler_options parser: :json
54
+
55
+ # toiler_options parser: ->(sqs_msg){ REXML::Document.new(sqs_msg.body) }
56
+ # toiler_options parser: MultiJson
57
+ # toiler_options auto_visibility_timeout: true
58
+ # toiler_options batch: true
59
+
60
+ #Example connection client that should be shared across all instances of MyWorker
61
+ @@client = ConnectionClient.new
62
+
63
+ def initialize
64
+ @last_message = nil
65
+ end
66
+
67
+ def perform(sqs_msg, body)
68
+ #Workers are thread safe, yay!
69
+ #Each worker instance is assured to be processing only one message at a time
70
+ @last_message = sqs_msg
71
+ puts body
72
+ end
73
+ end
74
+ ```
75
+
76
+ ### Configuration
77
+
78
+ ```yaml
79
+ aws:
80
+ access_key_id: ... # or <%= ENV['AWS_ACCESS_KEY_ID'] %>
81
+ secret_access_key: ... # or <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
82
+ region: us-east-1 # or <%= ENV['AWS_REGION'] %>
83
+ wait: 20 # The time in seconds to wait for messages during long-polling
84
+ ```
85
+
86
+ ### Rails Integration
87
+
88
+ You can tell Toiler to load your Rails application by passing the `-R` or `--rails` flag to the "toiler" command.
89
+
90
+ If you load Rails, and assuming your workers are located in the `app/workers` directory, they will be auto-loaded. This means you don't need to require them explicitly with `-r`.
91
+
92
+
93
+ ### Start Toiler
94
+
95
+ ```shell
96
+ bundle exec toiler -r worker.rb -C toiler.yml
97
+ ```
98
+
99
+ Other options:
100
+
101
+ ```bash
102
+ toiler --help
103
+
104
+ -d, --daemon Daemonize process
105
+ -r, --require [PATH|DIR] Location of the worker
106
+ -C, --config PATH Path to YAML config file
107
+ -R, --rails Load Rails
108
+ -L, --logfile PATH Path to writable logfile
109
+ -P, --pidfile PATH Path to pidfile
110
+ -v, --verbose Print more verbose output
111
+ -h, --help Show help
112
+ ```
113
+
114
+
115
+ ## Credits
116
+
117
+ Much of the credit goes to [Pablo Cantero](https://github.com/phstc), creator of [Shoryuken](https://github.com/phstc/shoryuken), and [everybody who contributed to it](https://github.com/phstc/shoryuken/graphs/contributors).
118
+
119
+ ## Contributing
120
+
121
+ 1. Fork it ( https://github.com/sschepens/toiler/fork )
122
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
123
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
124
+ 4. Push to the branch (`git push origin my-new-feature`)
125
+ 5. Create a new Pull Request