redstorm 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -10,3 +10,6 @@
10
10
  - examples using simple DSL
11
11
  - redstorm command usage syntax change
12
12
  - more doc in README
13
+
14
+ # 0.2.1, 11-23-2011
15
+ - gems support in production cluster
data/README.md CHANGED
@@ -1,12 +1,13 @@
1
- # RedStorm v0.2.0 - JRuby on Storm
1
+ # RedStorm v0.2.1 - JRuby on Storm
2
2
 
3
3
  RedStorm provides the JRuby integration for the [Storm][storm] distributed realtime computation system.
4
4
 
5
5
  ## Changes from 0.1.x
6
6
 
7
- - This release introduces the *simple* DSL. Topology, Spout and Bolt classes can inherit from the SimpleTopoloy, SimpleSpout and SimpleBolt classes which provides a very clean and consise DSL. See [examples/simple](https://github.com/colinsurprenant/redstorm/tree/master/examples/simple).
8
- - Use the same SimpleTopology class for local development cluster or remote production cluster.
9
- - The `redstorm` command has a new syntax.
7
+ - this release introduces the *simple* DSL. Topology, Spout and Bolt classes can inherit from the SimpleTopology, SimpleSpout and SimpleBolt classes which provides a very clean and consise DSL. See [examples/simple](https://github.com/colinsurprenant/redstorm/tree/master/examples/simple).
8
+ - use the same SimpleTopology class for local development cluster or remote production cluster.
9
+ - the `redstorm` command has a new syntax.
10
+ - gems support in production cluster
10
11
 
11
12
  ## Dependencies
12
13
 
@@ -27,7 +28,7 @@ $ gem install redstorm
27
28
 
28
29
  ### Initial setup
29
30
 
30
- Install RedStom dependencies; from your project root directory execute:
31
+ - install RedStom dependencies; from your project root directory execute:
31
32
 
32
33
  ``` sh
33
34
  $ redstorm install
@@ -37,9 +38,21 @@ The `install` command will install all Java jars dependencies using [ruby-maven]
37
38
 
38
39
  ***DON'T PANIC*** it's Maven. The first time you run `$ redstorm install` Maven will take a few minutes resolving dependencies and in the end will download and install the dependency jar files.
39
40
 
40
- ### Run in local mode
41
+ - create a topology class. The *underscore* topology_class_file_name.rb **MUST** correspond to its *CamelCase* class name.
42
+
43
+ ### Gems
44
+
45
+ Until this is better integrated, you can use **gems** in local mode and on a production cluster:
46
+
47
+ - **local mode**: simply install your gems the usual way, they will be picked up when run in local mode.
48
+
49
+ - **production cluster**: install your gem in the `target/gems` folder using:
41
50
 
42
- Create a topology class. The *underscore* topology_class_file_name.rb **MUST** correspond to its *CamelCase* class name.
51
+ ```sh
52
+ gem install <the gem> --install-dir target/gems/ --no-ri --no-rdoc
53
+ ```
54
+
55
+ ### Run in local mode
43
56
 
44
57
  ``` sh
45
58
  $ redstorm local <path/to/topology_class_file_name.rb>
@@ -81,7 +94,7 @@ $ redstorm local examples/simple/exclamation_topology2.rb
81
94
  $ redstorm local examples/simple/word_count_topology.rb
82
95
  ```
83
96
 
84
- This next example requires the use of the [Redis Gem](https://github.com/ezmobius/redis-rb) and a [Redis][redis] server runnig on `localhost:6379`
97
+ This next example requires the use of the [Redis Gem](https://github.com/ezmobius/redis-rb) and a [Redis][redis] server running on `localhost:6379`
85
98
 
86
99
  ``` sh
87
100
  $ redstorm local examples/simple/redis_word_count_topology.rb
@@ -105,6 +118,22 @@ $ redstorm jar examples
105
118
  $ storm jar ./target/cluster-topology.jar redstorm.TopologyLauncher cluster examples/simple/word_count_topology.rb
106
119
  ```
107
120
 
121
+ - to run `examples/simple/redis_word_count_topology.rb` you need a [Redis][redis] server running on `localhost:6379` and the Redis gem in `target/gems` using:
122
+
123
+ ```sh
124
+ gem install redis --install-dir target/gems/ --no-ri --no-rdoc
125
+ ```
126
+
127
+ - generate jar and submit:
128
+
129
+ ``` sh
130
+ $ redstorm jar examples
131
+ $ storm jar ./target/cluster-topology.jar redstorm.TopologyLauncher cluster examples/simple/redis_word_count_topology.rb
132
+ ```
133
+
134
+ - using `redis-cli`, push words into the `test` list and watch Storm pick them up
135
+
136
+
108
137
  Basically you must follow the [Storm instructions](https://github.com/nathanmarz/storm/wiki) to [setup a production cluster](https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster) and [submit your topology to the cluster](https://github.com/nathanmarz/storm/wiki/Running-topologies-on-a-production-cluster).
109
138
 
110
139
  ## DSL usage
@@ -430,6 +459,57 @@ end
430
459
  - [SplitSentenceBolt](https://github.com/colinsurprenant/redstorm/tree/master/examples/simple/split_sentence_bolt.rb)
431
460
  - [WordCountBolt](https://github.com/colinsurprenant/redstorm/tree/master/examples/simple/word_count_bolt.rb)
432
461
 
462
+ ## Development
463
+
464
+ ### Requirements
465
+
466
+ - JRuby 1.6.5
467
+ - rake gem
468
+ - ruby-maven gem
469
+ - rspec gem
470
+
471
+ ### Contribute
472
+
473
+ Fork the project, create a branch and submit a pull request.
474
+
475
+ Some ways you can contribute:
476
+
477
+ - by reporting bugs using the issue tracker
478
+ - by suggesting new features using the issue tracker
479
+ - by writing or editing documentation
480
+ - by writing specs
481
+ - by writing code
482
+ - by refactoring code
483
+ - ...
484
+
485
+ ### Workflow
486
+
487
+ - fork project
488
+ - create branch
489
+ - install dependencies in `target/dependencies`
490
+
491
+ ```sh
492
+ $ rake deps
493
+ ```
494
+
495
+ - generate and build Java source into `target/classes`
496
+
497
+ ```sh
498
+ $ rake build
499
+ ```
500
+
501
+ - run topology in local dev cluster
502
+
503
+ ```sh
504
+ $ bin/redstorm local path/to/topology_class.rb
505
+ ```
506
+
507
+ - generate remote cluster topology jar into `target/cluster-topology.jar`, including the `examples/` directory.
508
+
509
+ ```sh
510
+ $ rake jar['examples']
511
+ ```
512
+
433
513
  ## Author
434
514
  Colin Surprenant, [@colinsurprenant][twitter], [colin.surprenant@needium.com][needium], [colin.surprenant@gmail.com][gmail], [http://github.com/colinsurprenant][github]
435
515
 
data/TODO.md ADDED
@@ -0,0 +1,4 @@
1
+ # TODO
2
+
3
+ - expose the log4j logger in Simple{Topology|Bolt|Spout} (Java::org.apache.log4j.Logger.getLogger(...))
4
+ - see if using bundler would provide better gems integration and easier jar packaging
@@ -1,3 +1,4 @@
1
+ require 'rubygems'
1
2
  require 'redis'
2
3
  require 'thread'
3
4
  require 'red_storm'
@@ -1,3 +1,3 @@
1
1
  module RedStorm
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
@@ -15,6 +15,7 @@ TARGET_SRC_DIR = "#{TARGET_DIR}/src"
15
15
  TARGET_CLASSES_DIR = "#{TARGET_DIR}/classes"
16
16
  TARGET_DEPENDENCY_DIR = "#{TARGET_DIR}/dependency"
17
17
  TARGET_DEPENDENCY_UNPACKED_DIR = "#{TARGET_DIR}/dependency-unpacked"
18
+ TARGET_GEMS_DIR = "#{TARGET_DIR}/gems"
18
19
  TARGET_CLUSTER_JAR = "#{TARGET_DIR}/cluster-topology.jar"
19
20
 
20
21
  JAVA_SRC_DIR = "#{RedStorm::REDSTORM_HOME}/src/main"
@@ -42,6 +43,7 @@ task :setup do
42
43
  ant.mkdir :dir => TARGET_DIR
43
44
  ant.mkdir :dir => TARGET_CLASSES_DIR
44
45
  ant.mkdir :dir => TARGET_SRC_DIR
46
+ ant.mkdir :dir => TARGET_GEMS_DIR
45
47
  ant.path :id => 'classpath' do
46
48
  fileset :dir => TARGET_DEPENDENCY_DIR
47
49
  fileset :dir => TARGET_CLASSES_DIR
@@ -60,6 +62,7 @@ task :devjar => [:unpack, :clean_jar] do
60
62
  ant.jar :destfile => TARGET_CLUSTER_JAR do
61
63
  fileset :dir => TARGET_CLASSES_DIR
62
64
  fileset :dir => TARGET_DEPENDENCY_UNPACKED_DIR
65
+ fileset :dir => TARGET_GEMS_DIR
63
66
  fileset :dir => RedStorm::REDSTORM_HOME do
64
67
  include :name => "examples/**/*"
65
68
  end
@@ -77,9 +80,7 @@ task :jar, [:dir] => [:unpack, :clean_jar] do |t, args|
77
80
  ant.jar :destfile => TARGET_CLUSTER_JAR do
78
81
  fileset :dir => TARGET_CLASSES_DIR
79
82
  fileset :dir => TARGET_DEPENDENCY_UNPACKED_DIR
80
- fileset :dir => RedStorm::REDSTORM_HOME do
81
- include :name => "examples/**/*"
82
- end
83
+ fileset :dir => TARGET_GEMS_DIR
83
84
  fileset :dir => JRUBY_SRC_DIR do
84
85
  exclude :name => "tasks/**"
85
86
  end
data/pom.xml CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <groupId>redstorm</groupId>
6
6
  <artifactId>redstorm</artifactId>
7
- <version>0.2.0</version>
7
+ <version>0.2.1</version>
8
8
  <name>RedStorm JRuby on Storm</name>
9
9
 
10
10
  <properties>
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: redstorm
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.0
5
+ version: 0.2.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Colin Surprenant
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-17 00:00:00 Z
13
+ date: 2011-11-23 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rubyforge
@@ -90,6 +90,7 @@ files:
90
90
  - README.md
91
91
  - CHANGELOG.md
92
92
  - LICENSE.md
93
+ - TODO.md
93
94
  homepage: https://github.com/colinsurprenant/redstorm
94
95
  licenses: []
95
96