activemessaging 0.11.0 → 0.12.0

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.
data/.travis.yml ADDED
@@ -0,0 +1,40 @@
1
+ language: ruby
2
+ gemfile:
3
+ - gemfiles/activesupport23.gemfile
4
+ - gemfiles/activesupport30.gemfile
5
+ - gemfiles/activesupport31.gemfile
6
+ - gemfiles/activesupport32.gemfile
7
+ rvm:
8
+ - 1.8.7
9
+ - 1.9.2
10
+ - 1.9.3
11
+ - ruby-head
12
+ - ree
13
+ - jruby-18mode
14
+ - jruby-19mode
15
+ - jruby-head
16
+ - rbx-18mode
17
+ - rbx-19mode
18
+ matrix:
19
+ allow_failures:
20
+ - rvm: jruby-18mode
21
+ - rvm: jruby-19mode
22
+ - rvm: jruby-head
23
+ - rvm: rbx-18mode
24
+ - rvm: rbx-19mode
25
+ - rvm: ruby-head
26
+ exclude:
27
+ - rvm: 1.9.3
28
+ gemfile: gemfiles/activesupport23.gemfile
29
+ - rvm: ruby-head
30
+ gemfile: gemfiles/activesupport23.gemfile
31
+ - rvm: jruby-19mode
32
+ gemfile: gemfiles/activesupport23.gemfile
33
+ - rvm: jruby-head
34
+ gemfile: gemfiles/activesupport23.gemfile
35
+ - rvm: rbx-19mode
36
+ gemfile: gemfiles/activesupport23.gemfile
37
+ notifications:
38
+ recipients:
39
+ - matt.campbell@vibes.com
40
+ - lance.cooper@vibes.com
data/Appraisals ADDED
@@ -0,0 +1,19 @@
1
+ appraise "activesupport23" do
2
+ gem "activesupport", "~> 2.3.11"
3
+ end
4
+
5
+ appraise "activesupport30" do
6
+ gem "activesupport", "~> 3.0.8"
7
+ gem "i18n"
8
+ end
9
+
10
+ appraise "activesupport31" do
11
+ gem "activesupport", "~> 3.1.2"
12
+ gem "i18n"
13
+ end
14
+
15
+ appraise "activesupport32" do
16
+ gem "activesupport", "~> 3.2.2"
17
+ end
18
+
19
+ # vim: filetype=ruby
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source "http://rubygems.org"
2
+
3
+ # We group everything into test because while a default bundle install
4
+ # pulls in this group, Jeweler does not include it when consulting the
5
+ # Gemfile for dependencies.
6
+ # The short syntax isn't used because the appraisal gem does not support it.
7
+ gem 'reliable-msg', '~>1.1', :group => :test, :platform => :ruby if RUBY_VERSION < '1.9'
8
+ gem 'jruby-activemq', :group => :test, :platform => :jruby
9
+ gem 'appraisal', :group => :test
10
+
11
+ gemspec :development_group => :test
data/Gemfile.lock ADDED
@@ -0,0 +1,46 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ activemessaging (0.11.0)
5
+ activemessaging
6
+ activesupport (>= 2.3.11)
7
+ celluloid
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ activesupport (3.2.7)
13
+ i18n (~> 0.6)
14
+ multi_json (~> 1.0)
15
+ appraisal (0.4.1)
16
+ bundler
17
+ rake
18
+ celluloid (0.11.1)
19
+ timers (>= 1.0.0)
20
+ git (1.2.5)
21
+ i18n (0.6.0)
22
+ jeweler (1.8.4)
23
+ bundler (~> 1.0)
24
+ git (>= 1.2.5)
25
+ rake
26
+ rdoc
27
+ jruby-activemq (5.5.1-java)
28
+ json (1.7.4)
29
+ json (1.7.4-java)
30
+ multi_json (1.3.6)
31
+ rake (0.9.2.2)
32
+ rdoc (3.12)
33
+ json (~> 1.4)
34
+ stomp (1.2.4)
35
+ timers (1.0.1)
36
+
37
+ PLATFORMS
38
+ java
39
+ ruby
40
+
41
+ DEPENDENCIES
42
+ activemessaging!
43
+ appraisal
44
+ jeweler
45
+ jruby-activemq
46
+ stomp
data/Rakefile CHANGED
@@ -1,7 +1,11 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
1
4
  require 'rake'
2
5
  require 'rake/testtask'
3
6
  require 'rdoc/rdoc'
4
- require 'rake/gempackagetask'
7
+
8
+ require 'appraisal'
5
9
 
6
10
  desc 'Default: run unit tests.'
7
11
  task :default => :test
@@ -29,12 +33,17 @@ begin
29
33
  gemspec.description = "ActiveMessaging is an attempt to bring the simplicity and elegance of rails development to the world of messaging. Messaging, (or event-driven architecture) is widely used for enterprise integration, with frameworks such as Java's JMS, and products such as ActiveMQ, Tibco, IBM MQSeries, etc. Now supporting Rails 3 as of version 0.8.0."
30
34
  gemspec.email = "activemessaging-discuss@googlegroups.com"
31
35
  gemspec.homepage = "http://github.com/kookster/activemessaging"
32
- gemspec.authors = ["Jon Tirsen", "Andrew Kuklewicz", "Olle Jonsson", "Sylvain Perez", "Cliff Moon", 'Uwe Kubosch']
36
+ gemspec.authors = ["Jon Tirsen", "Andrew Kuklewicz", "Olle Jonsson", "Sylvain Perez", "Cliff Moon", 'Uwe Kubosch', 'Lance Cooper', 'Matt Campbell']
33
37
 
34
38
  # added
35
- gemspec.add_dependency('activesupport', '>= 1.0.0')
39
+ gemspec.add_dependency('activesupport', '>= 2.3.11')
36
40
  gemspec.add_dependency('celluloid')
37
-
41
+
42
+ gemspec.add_development_dependency('jeweler')
43
+ gemspec.add_development_dependency('stomp')
44
+ gemspec.add_development_dependency('appraisal')
45
+ #gemspec.add_development_dependency('reliable-msg')
46
+
38
47
  end
39
48
  Jeweler::GemcutterTasks.new
40
49
  rescue LoadError
@@ -66,8 +75,3 @@ end
66
75
  # s.add_dependency(%q<rubigen>, [">= 1.5.2"])
67
76
  # #s.add_dependency(%q<common-pool-cliffmoon>, [">= 0.0.3"])
68
77
  # end
69
-
70
- # desc 'Generate ActiveMessaging gem.'
71
- # Rake::GemPackageTask.new(gem_spec) do |pkg|
72
- # end
73
-
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.11.0
1
+ 0.12.0
@@ -5,10 +5,10 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "activemessaging"
8
- s.version = "0.11.0"
8
+ s.version = "0.12.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Jon Tirsen", "Andrew Kuklewicz", "Olle Jonsson", "Sylvain Perez", "Cliff Moon", "Uwe Kubosch"]
11
+ s.authors = ["Jon Tirsen", "Andrew Kuklewicz", "Olle Jonsson", "Sylvain Perez", "Cliff Moon", "Uwe Kubosch", "Lance Cooper", "Matt Campbell"]
12
12
  s.date = "2012-08-07"
13
13
  s.description = "ActiveMessaging is an attempt to bring the simplicity and elegance of rails development to the world of messaging. Messaging, (or event-driven architecture) is widely used for enterprise integration, with frameworks such as Java's JMS, and products such as ActiveMQ, Tibco, IBM MQSeries, etc. Now supporting Rails 3 as of version 0.8.0."
14
14
  s.email = "activemessaging-discuss@googlegroups.com"
@@ -16,10 +16,22 @@ Gem::Specification.new do |s|
16
16
  "README.md"
17
17
  ]
18
18
  s.files = [
19
+ ".travis.yml",
20
+ "Appraisals",
21
+ "Gemfile",
22
+ "Gemfile.lock",
19
23
  "README.md",
20
24
  "Rakefile",
21
25
  "VERSION",
22
26
  "activemessaging.gemspec",
27
+ "gemfiles/activesupport23.gemfile",
28
+ "gemfiles/activesupport23.gemfile.lock",
29
+ "gemfiles/activesupport30.gemfile",
30
+ "gemfiles/activesupport30.gemfile.lock",
31
+ "gemfiles/activesupport31.gemfile",
32
+ "gemfiles/activesupport31.gemfile.lock",
33
+ "gemfiles/activesupport32.gemfile",
34
+ "gemfiles/activesupport32.gemfile.lock",
23
35
  "generators/a13g_test_harness/a13g_test_harness_generator.rb",
24
36
  "generators/a13g_test_harness/templates/active_messaging_test.rhtml",
25
37
  "generators/a13g_test_harness/templates/active_messaging_test_controller.rb",
@@ -30,7 +42,7 @@ Gem::Specification.new do |s|
30
42
  "generators/filter/templates/filter_test.rb",
31
43
  "generators/processor/USAGE",
32
44
  "generators/processor/processor_generator.rb",
33
- "generators/processor/templates/application.rb",
45
+ "generators/processor/templates/application_processor.rb",
34
46
  "generators/processor/templates/broker.yml",
35
47
  "generators/processor/templates/jruby_poller",
36
48
  "generators/processor/templates/messaging.rb",
@@ -104,15 +116,27 @@ Gem::Specification.new do |s|
104
116
  s.specification_version = 3
105
117
 
106
118
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
107
- s.add_runtime_dependency(%q<activesupport>, [">= 1.0.0"])
119
+ s.add_runtime_dependency(%q<activemessaging>, [">= 0"])
120
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.3.11"])
108
121
  s.add_runtime_dependency(%q<celluloid>, [">= 0"])
122
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
123
+ s.add_development_dependency(%q<stomp>, [">= 0"])
124
+ s.add_development_dependency(%q<appraisal>, [">= 0"])
109
125
  else
110
- s.add_dependency(%q<activesupport>, [">= 1.0.0"])
126
+ s.add_dependency(%q<activemessaging>, [">= 0"])
127
+ s.add_dependency(%q<activesupport>, [">= 2.3.11"])
111
128
  s.add_dependency(%q<celluloid>, [">= 0"])
129
+ s.add_dependency(%q<jeweler>, [">= 0"])
130
+ s.add_dependency(%q<stomp>, [">= 0"])
131
+ s.add_dependency(%q<appraisal>, [">= 0"])
112
132
  end
113
133
  else
114
- s.add_dependency(%q<activesupport>, [">= 1.0.0"])
134
+ s.add_dependency(%q<activemessaging>, [">= 0"])
135
+ s.add_dependency(%q<activesupport>, [">= 2.3.11"])
115
136
  s.add_dependency(%q<celluloid>, [">= 0"])
137
+ s.add_dependency(%q<jeweler>, [">= 0"])
138
+ s.add_dependency(%q<stomp>, [">= 0"])
139
+ s.add_dependency(%q<appraisal>, [">= 0"])
116
140
  end
117
141
  end
118
142
 
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "reliable-msg", "~>1.1", :group=>:test, :platform=>:ruby
6
+ gem "jruby-activemq", :group=>:test, :platform=>:jruby
7
+ gem "appraisal", :group=>:test
8
+ gem "activesupport", "~> 2.3.11"
9
+
10
+ gemspec :path=>"../", :development_group=>:test
@@ -0,0 +1,51 @@
1
+ PATH
2
+ remote: /Users/LCooper/src/activemessaging
3
+ specs:
4
+ activemessaging (0.10.0)
5
+ activemessaging
6
+ activesupport (>= 2.3.11)
7
+ celluloid
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ activesupport (2.3.14)
13
+ appraisal (0.4.1)
14
+ bundler
15
+ rake
16
+ celluloid (0.11.1)
17
+ timers (>= 1.0.0)
18
+ git (1.2.5)
19
+ jeweler (1.8.4)
20
+ bundler (~> 1.0)
21
+ git (>= 1.2.5)
22
+ rake
23
+ rdoc
24
+ jruby-activemq (5.5.1-java)
25
+ json (1.7.4)
26
+ json (1.7.4-java)
27
+ macaddr (1.6.1)
28
+ systemu (~> 2.5.0)
29
+ rake (0.9.2.2)
30
+ rdoc (3.12)
31
+ json (~> 1.4)
32
+ reliable-msg (1.1.0)
33
+ uuid (>= 1.0.0)
34
+ stomp (1.2.4)
35
+ systemu (2.5.2)
36
+ timers (1.0.1)
37
+ uuid (2.3.5)
38
+ macaddr (~> 1.0)
39
+
40
+ PLATFORMS
41
+ java
42
+ ruby
43
+
44
+ DEPENDENCIES
45
+ activemessaging!
46
+ activesupport (~> 2.3.11)
47
+ appraisal
48
+ jeweler
49
+ jruby-activemq
50
+ reliable-msg (~> 1.1)
51
+ stomp
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "reliable-msg", "~>1.1", :group=>:test, :platform=>:ruby
6
+ gem "jruby-activemq", :group=>:test, :platform=>:jruby
7
+ gem "appraisal", :group=>:test
8
+ gem "activesupport", "~> 3.0.8"
9
+ gem "i18n"
10
+
11
+ gemspec :path=>"../", :development_group=>:test
@@ -0,0 +1,53 @@
1
+ PATH
2
+ remote: /Users/LCooper/src/activemessaging
3
+ specs:
4
+ activemessaging (0.10.0)
5
+ activemessaging
6
+ activesupport (>= 2.3.11)
7
+ celluloid
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ activesupport (3.0.16)
13
+ appraisal (0.4.1)
14
+ bundler
15
+ rake
16
+ celluloid (0.11.1)
17
+ timers (>= 1.0.0)
18
+ git (1.2.5)
19
+ i18n (0.6.0)
20
+ jeweler (1.8.4)
21
+ bundler (~> 1.0)
22
+ git (>= 1.2.5)
23
+ rake
24
+ rdoc
25
+ jruby-activemq (5.5.1-java)
26
+ json (1.7.4)
27
+ json (1.7.4-java)
28
+ macaddr (1.6.1)
29
+ systemu (~> 2.5.0)
30
+ rake (0.9.2.2)
31
+ rdoc (3.12)
32
+ json (~> 1.4)
33
+ reliable-msg (1.1.0)
34
+ uuid (>= 1.0.0)
35
+ stomp (1.2.4)
36
+ systemu (2.5.2)
37
+ timers (1.0.1)
38
+ uuid (2.3.5)
39
+ macaddr (~> 1.0)
40
+
41
+ PLATFORMS
42
+ java
43
+ ruby
44
+
45
+ DEPENDENCIES
46
+ activemessaging!
47
+ activesupport (~> 3.0.8)
48
+ appraisal
49
+ i18n
50
+ jeweler
51
+ jruby-activemq
52
+ reliable-msg (~> 1.1)
53
+ stomp
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "reliable-msg", "~>1.1", :group=>:test, :platform=>:ruby
6
+ gem "jruby-activemq", :group=>:test, :platform=>:jruby
7
+ gem "appraisal", :group=>:test
8
+ gem "activesupport", "~> 3.1.2"
9
+ gem "i18n"
10
+
11
+ gemspec :path=>"../", :development_group=>:test
@@ -0,0 +1,55 @@
1
+ PATH
2
+ remote: /Users/LCooper/src/activemessaging
3
+ specs:
4
+ activemessaging (0.10.0)
5
+ activemessaging
6
+ activesupport (>= 2.3.11)
7
+ celluloid
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ activesupport (3.1.7)
13
+ multi_json (>= 1.0, < 1.3)
14
+ appraisal (0.4.1)
15
+ bundler
16
+ rake
17
+ celluloid (0.11.1)
18
+ timers (>= 1.0.0)
19
+ git (1.2.5)
20
+ i18n (0.6.0)
21
+ jeweler (1.8.4)
22
+ bundler (~> 1.0)
23
+ git (>= 1.2.5)
24
+ rake
25
+ rdoc
26
+ jruby-activemq (5.5.1-java)
27
+ json (1.7.4)
28
+ json (1.7.4-java)
29
+ macaddr (1.6.1)
30
+ systemu (~> 2.5.0)
31
+ multi_json (1.2.0)
32
+ rake (0.9.2.2)
33
+ rdoc (3.12)
34
+ json (~> 1.4)
35
+ reliable-msg (1.1.0)
36
+ uuid (>= 1.0.0)
37
+ stomp (1.2.4)
38
+ systemu (2.5.2)
39
+ timers (1.0.1)
40
+ uuid (2.3.5)
41
+ macaddr (~> 1.0)
42
+
43
+ PLATFORMS
44
+ java
45
+ ruby
46
+
47
+ DEPENDENCIES
48
+ activemessaging!
49
+ activesupport (~> 3.1.2)
50
+ appraisal
51
+ i18n
52
+ jeweler
53
+ jruby-activemq
54
+ reliable-msg (~> 1.1)
55
+ stomp
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "reliable-msg", "~>1.1", :group=>:test, :platform=>:ruby
6
+ gem "jruby-activemq", :group=>:test, :platform=>:jruby
7
+ gem "appraisal", :group=>:test
8
+ gem "activesupport", "~> 3.2.2"
9
+
10
+ gemspec :path=>"../", :development_group=>:test
@@ -0,0 +1,55 @@
1
+ PATH
2
+ remote: /Users/LCooper/src/activemessaging
3
+ specs:
4
+ activemessaging (0.10.0)
5
+ activemessaging
6
+ activesupport (>= 2.3.11)
7
+ celluloid
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ activesupport (3.2.7)
13
+ i18n (~> 0.6)
14
+ multi_json (~> 1.0)
15
+ appraisal (0.4.1)
16
+ bundler
17
+ rake
18
+ celluloid (0.11.1)
19
+ timers (>= 1.0.0)
20
+ git (1.2.5)
21
+ i18n (0.6.0)
22
+ jeweler (1.8.4)
23
+ bundler (~> 1.0)
24
+ git (>= 1.2.5)
25
+ rake
26
+ rdoc
27
+ jruby-activemq (5.5.1-java)
28
+ json (1.7.4)
29
+ json (1.7.4-java)
30
+ macaddr (1.6.1)
31
+ systemu (~> 2.5.0)
32
+ multi_json (1.3.6)
33
+ rake (0.9.2.2)
34
+ rdoc (3.12)
35
+ json (~> 1.4)
36
+ reliable-msg (1.1.0)
37
+ uuid (>= 1.0.0)
38
+ stomp (1.2.4)
39
+ systemu (2.5.2)
40
+ timers (1.0.1)
41
+ uuid (2.3.5)
42
+ macaddr (~> 1.0)
43
+
44
+ PLATFORMS
45
+ java
46
+ ruby
47
+
48
+ DEPENDENCIES
49
+ activemessaging!
50
+ activesupport (~> 3.2.2)
51
+ appraisal
52
+ jeweler
53
+ jruby-activemq
54
+ reliable-msg (~> 1.1)
55
+ stomp
@@ -19,7 +19,7 @@ class ProcessorGenerator < NamedBase
19
19
 
20
20
  m.template 'messaging.rb', File.join('config', "messaging.rb")
21
21
  m.file 'broker.yml', File.join('config', "broker.yml")
22
- m.file 'application.rb', File.join(path, "application.rb")
22
+ m.file 'application_processor.rb', File.join(path, "application_processor.rb")
23
23
  m.file 'poller.rb', File.join('lib', "poller.rb")
24
24
  if defined?(JRUBY_VERSION)
25
25
  m.file 'jruby_poller', File.join('script', "jruby_poller"), { :chmod => 0755 }
@@ -2,16 +2,16 @@
2
2
 
3
3
  ENV['APP_ROOT'] ||= File.expand_path(File.join(File.dirname(__FILE__), '..'))
4
4
  APP_ROOT = ENV['APP_ROOT']
5
+ ENV['APP_NAME'] ||= "poller"
6
+ APP_NAME = ENV['APP_NAME']
5
7
  script_file = File.join(APP_ROOT, 'lib', 'poller.rb')
6
8
  tmp_dir = File.join(APP_ROOT, 'tmp')
7
9
 
8
10
  require 'rubygems'
9
11
  require 'daemons'
10
- require 'activesupport'
11
- require 'activemessaging'
12
12
 
13
13
  options = {
14
- :app_name => "poller",
14
+ :app_name => APP_NAME,
15
15
  :dir_mode => :normal,
16
16
  :dir => tmp_dir,
17
17
  :multiple => true,
@@ -3,6 +3,9 @@
3
3
  STDOUT.sync = true; STDOUT.flush
4
4
  STDERR.sync = true; STDERR.flush
5
5
 
6
+ # The daemons gem sets our cwd to /, which Rails doesn't work well with.
7
+ Dir.chdir APP_ROOT
8
+
6
9
  #Try to Load Merb
7
10
  merb_init_file = File.expand_path(File.dirname(__FILE__)+'/../config/merb_init')
8
11
  if File.exists? merb_init_file
@@ -17,8 +20,7 @@ else
17
20
  require File.join(RAILS_ROOT, 'config', 'environment')
18
21
  end
19
22
 
20
- # Load ActiveMessaging processors
21
- #ActiveMessaging::load_processors
22
-
23
23
  # Start it up!
24
- ActiveMessaging::start
24
+ require 'activemessaging'
25
+ ActiveMessaging.load_activemessaging
26
+ ActiveMessaging.start
@@ -1,6 +1,7 @@
1
1
  if defined?(JRUBY_VERSION)
2
2
  #require 'java'
3
3
  include Java
4
+ require 'activemq'
4
5
 
5
6
  begin
6
7
  java_import javax.naming.InitialContext
@@ -239,4 +240,4 @@ module ActiveMessaging
239
240
  end
240
241
  end
241
242
 
242
- end
243
+ end
@@ -6,14 +6,23 @@ module ActiveMessaging
6
6
  def initialize(body=nil, id=nil, headers={}, destination=nil)
7
7
  @body, @id, @headers, @destination = body, id, headers, destination
8
8
  end
9
-
9
+
10
10
  def matches_subscription?(subscription)
11
11
  self.destination.to_s == subscription.destination.value.to_s
12
12
  end
13
13
 
14
+ def dup
15
+ super.tap do |copy|
16
+ [:body, :id, :headers, :destination].each do |field_name|
17
+ value = send field_name
18
+ copy.send "#{field_name}=", (value.duplicable? ? value.dup : value)
19
+ end
20
+ end
21
+ end
22
+
14
23
  def to_s
15
24
  "<#{self.class.name} id='#{id}' headers='#{headers.inspect}' body='#{body}' >"
16
25
  end
17
26
  end
18
27
 
19
- end
28
+ end
@@ -234,7 +234,7 @@ module ActiveMessaging
234
234
  :direction => :incoming
235
235
  }
236
236
  begin
237
- execute_filter_chain(:incoming, message, routing) do |m|
237
+ execute_filter_chain(:incoming, message.dup, routing) do |m|
238
238
  result = subscription.processor_class.new.process!(m)
239
239
  end
240
240
  rescue ActiveMessaging::AbortMessageException
@@ -24,12 +24,12 @@ module ActiveMessaging #:nodoc:
24
24
  def self.reset
25
25
  unsubscribe
26
26
  disconnect
27
- @@filters = []
28
- @@subscriptions = {}
29
- @@named_destinations = {}
30
- @@processor_groups = {}
31
- @@current_processor_group = nil
32
- @@connections = {}
27
+ @filters = []
28
+ @subscriptions = {}
29
+ @named_destinations = {}
30
+ @processor_groups = {}
31
+ @current_processor_group = nil
32
+ @connections = {}
33
33
  end
34
34
  end
35
35
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  # This owes no small debt to sidekiq for showing how to use celluloid for polling for messages.
5
5
  # https://github.com/mperham/sidekiq/blob/poller/lib/sidekiq/manager.rb
6
-
6
+ if RUBY_VERSION.to_f >= 1.9 # Celluloid requires fibers support, which is not available on 1.8
7
7
  require 'celluloid'
8
8
 
9
9
  module ActiveMessaging
@@ -205,4 +205,5 @@ module ActiveMessaging
205
205
 
206
206
  end
207
207
 
208
- end
208
+ end
209
+ end # if RUBY_VERSION
data/test/gateway_test.rb CHANGED
@@ -14,10 +14,7 @@ class InitializeFilter
14
14
  end
15
15
 
16
16
  class GatewayTest < Test::Unit::TestCase
17
-
18
-
19
17
  class ClassFilter
20
-
21
18
  def initialize
22
19
  raise "Don't try and construct one of these please"
23
20
  end
@@ -35,6 +32,17 @@ class GatewayTest < Test::Unit::TestCase
35
32
  end
36
33
  end
37
34
 
35
+ class MessageManglingFilter
36
+ class << self
37
+ def process(message, details={})
38
+ message.body.upcase!
39
+ message.id.upcase!
40
+ message.headers['the-mangler'] = 'run'
41
+ message.destination.gsub! '/', '#'
42
+ end
43
+ end
44
+ end
45
+
38
46
  class TestProcessor < ActiveMessaging::Processor
39
47
  include ActiveMessaging::MessageSender
40
48
  #subscribes_to :testqueue
@@ -171,6 +179,23 @@ class GatewayTest < Test::Unit::TestCase
171
179
  assert_equal msg, ActiveMessaging::Gateway.connection.unreceived_messages.first
172
180
  end
173
181
 
182
+ def test_aborted_messages_retry_original_message
183
+ ActiveMessaging::Gateway.destination :hello_world, '/queue/helloWorld'
184
+ ActiveMessaging::Gateway.filter 'gateway_test/message_mangling_filter'
185
+ ActiveMessaging::Gateway.subscribe_to :hello_world, TestRetryProcessor, headers={}
186
+
187
+ message_body = "message_body"
188
+ message_id = "55-a-msg"
189
+ message_headers = { 'x-my-header' => 'value' }
190
+ message_destination = '/queue/helloWorld'
191
+ msg = ActiveMessaging::Adapters::Test::Message.new(message_body.dup, message_id.dup, message_headers.dup, message_destination.dup)
192
+ ActiveMessaging::Gateway.dispatch(msg)
193
+ assert_equal message_body, ActiveMessaging::Gateway.connection.unreceived_messages.first.body
194
+ assert_equal message_id, ActiveMessaging::Gateway.connection.unreceived_messages.first.id
195
+ assert_equal message_headers, ActiveMessaging::Gateway.connection.unreceived_messages.first.headers
196
+ assert_equal message_destination, ActiveMessaging::Gateway.connection.unreceived_messages.first.destination
197
+ end
198
+
174
199
  def test_receive
175
200
  ActiveMessaging::Gateway.destination :hello_world, '/queue/helloWorld'
176
201
  ActiveMessaging::Gateway.publish :hello_world, "test_publish body", self.class, headers={}, timeout=10
data/test/jms_test.rb CHANGED
@@ -2,14 +2,16 @@ require File.dirname(__FILE__) + '/test_helper'
2
2
 
3
3
  if defined?(JRUBY_VERSION)
4
4
 
5
+ require 'activemessaging/adapters/jms'
6
+
5
7
  class JmsTest < Test::Unit::TestCase
6
8
 
7
9
  def setup
8
10
  @test_txt = 'Yo Homie!'
9
11
  @isolation_const = rand(99999999)
10
- @connection = ActiveMessaging::Adapters::Jms::Connection.new(:url => 'tcp://localhost:61616',
11
- :login => '',
12
- :passcode => '',
12
+ @connection = ActiveMessaging::Adapters::Jms::Connection.new(:url => 'vm://jms_test',
13
+ :login => '',
14
+ :passcode => '',
13
15
  :connection_factory => 'org.apache.activemq.ActiveMQConnectionFactory')
14
16
  end
15
17
 
@@ -40,6 +42,7 @@ class JmsTest < Test::Unit::TestCase
40
42
 
41
43
  def test_one_off_receive
42
44
  @connection.send "/queue/OneOff#{@isolation_const}", "one off message"
45
+ sleep 2
43
46
  message = @connection.receive "/queue/OneOff#{@isolation_const}"
44
47
  assert_equal "one off message", message.body
45
48
  assert_equal "MESSAGE", message.command
@@ -58,4 +61,4 @@ class JmsTest < Test::Unit::TestCase
58
61
 
59
62
  end
60
63
 
61
- end
64
+ end
@@ -1,6 +1,4 @@
1
1
  require File.dirname(__FILE__) + '/test_helper'
2
- require 'activemessaging/adapters/reliable_msg'
3
-
4
2
  loaded = true
5
3
  begin
6
4
  require 'reliable-msg'
@@ -9,6 +7,8 @@ rescue Object => e
9
7
  end
10
8
  if loaded
11
9
 
10
+ require 'activemessaging/adapters/reliable_msg'
11
+
12
12
  class ReliableMsgTest < Test::Unit::TestCase
13
13
 
14
14
  def setup
@@ -80,4 +80,4 @@ class ReliableMsgTest < Test::Unit::TestCase
80
80
 
81
81
  end
82
82
 
83
- end # if loaded
83
+ end # if loaded
data/test/stomp_test.rb CHANGED
@@ -60,6 +60,18 @@ class StompTest < Test::Unit::TestCase
60
60
  @connection.stomp_connection.receive = @message
61
61
  end
62
62
 
63
+ def sent_command
64
+ @connection.stomp_connection.socket.sent_messages[0]
65
+ end
66
+
67
+ def sent_headers
68
+ @connection.stomp_connection.socket.sent_messages.drop(1).take_while { |line| !line.empty? }
69
+ end
70
+
71
+ def sent_body
72
+ (@connection.stomp_connection.socket.sent_messages.drop_while {|line| !line.empty?}).drop(1).first
73
+ end
74
+
63
75
  def test_initialize
64
76
  i = { :retryMax => 4,
65
77
  :deadLetterQueue=>'/queue/dlq',
@@ -81,34 +93,35 @@ class StompTest < Test::Unit::TestCase
81
93
 
82
94
  def test_disconnect
83
95
  @connection.disconnect
84
- assert_equal "DISCONNECT", @connection.stomp_connection.socket.sent_messages[0]
96
+ assert_equal "DISCONNECT", sent_command
85
97
  end
86
98
 
87
99
  def test_subscribe
88
100
  @connection.subscribe @d, {}
89
- assert_equal "SUBSCRIBE", @connection.stomp_connection.socket.sent_messages[0]
90
- # assert_equal "content-length:0", @connection.stomp_connection.socket.sent_messages[1]
91
- assert_equal "destination:#{@d}", @connection.stomp_connection.socket.sent_messages[1]
101
+ assert_equal "SUBSCRIBE", sent_command
102
+ assert sent_headers.include?("content-length:0"), "No content-length header was sent"
103
+ assert sent_headers.include?("destination:#{@d}"), "No destination header was sent"
92
104
  assert_equal 1, @connection.stomp_connection.subscriptions.count
93
- assert_equal({'content-length'=>'0', :destination=>@d}, @connection.stomp_connection.subscriptions[@d])
105
+ assert_equal({:'content-type'=>'text/plain; charset=UTF-8', :'content-length'=>'0', :destination=>@d}, @connection.stomp_connection.subscriptions[@d])
94
106
  end
95
107
 
96
108
  def test_unsubscribe
97
109
  @connection.subscribe @d, {}
98
110
  @connection.stomp_connection.socket.sent_messages = []
99
111
  @connection.unsubscribe @d, {}
100
- assert_equal "UNSUBSCRIBE", @connection.stomp_connection.socket.sent_messages[0]
101
- # assert_equal "content-length:0", @connection.stomp_connection.socket.sent_messages[1]
102
- assert_equal "destination:#{@d}", @connection.stomp_connection.socket.sent_messages[1]
112
+ assert_equal "UNSUBSCRIBE", sent_command
113
+ assert sent_headers.include?("content-length:0"), "No content-length header was sent"
114
+ assert sent_headers.include?("destination:#{@d}"), "No destination header was sent"
103
115
  assert_equal 0, @connection.stomp_connection.subscriptions.count
104
116
  end
105
117
 
106
118
  def test_send
107
119
  @connection.send(@d, @message, {})
108
- assert_equal 'SEND', @connection.stomp_connection.socket.sent_messages[0]
109
- # assert_equal "content-length:#{@message.length}", @connection.stomp_connection.socket.sent_messages[1]
110
- assert_equal "destination:#{@d}", @connection.stomp_connection.socket.sent_messages[1]
111
- assert_equal @message, @connection.stomp_connection.socket.sent_messages[5]
120
+ assert_equal 'SEND', sent_command
121
+ assert sent_headers.include?("content-length:#{@message.length}"), "No content-length header was sent"
122
+ assert sent_headers.include?("destination:#{@d}"), "No destination header was sent"
123
+ # assert_equal @message, @connection.stomp_connection.socket.sent_messages[5]
124
+ assert_equal @message, sent_body
112
125
  end
113
126
 
114
127
  def test_receive
data/test/test_helper.rb CHANGED
@@ -3,19 +3,31 @@ rails_environtment_file = File.expand_path(File.dirname(__FILE__) + "/../../../.
3
3
  if File.exists? rails_environtment_file
4
4
  require rails_environment_file
5
5
  APP_ROOT = RAILS_ROOT
6
+ APP_ENV = Rails.env
6
7
  else
7
8
  ENV['APP_ENV'] = 'test'
8
9
  APP_ENV = 'test'
10
+ APP_ROOT = File.dirname(__FILE__) + '/app'
9
11
 
10
12
  $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
11
13
  require 'rubygems'
12
- require 'active_support'
14
+ require 'active_support/all'
15
+
16
+ module ActiveMessaging
17
+ def self.app_root
18
+ APP_ROOT
19
+ end
20
+
21
+ def self.app_env
22
+ APP_ENV
23
+ end
24
+ end
25
+
13
26
  require 'activemessaging/message_sender'
14
27
  require 'activemessaging/processor'
15
28
  require 'activemessaging/gateway'
16
29
  require 'activemessaging/filter'
17
30
  require 'activemessaging/adapters/test'
18
- APP_ROOT = File.dirname(__FILE__) + '/app'
19
31
  end
20
32
 
21
33
  # load other libraries
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activemessaging
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,29 @@ authors:
11
11
  - Sylvain Perez
12
12
  - Cliff Moon
13
13
  - Uwe Kubosch
14
+ - Lance Cooper
15
+ - Matt Campbell
14
16
  autorequire:
15
17
  bindir: bin
16
18
  cert_chain: []
17
19
  date: 2012-08-07 00:00:00.000000000 Z
18
20
  dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: activemessaging
23
+ requirement: !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ! '>='
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ type: :runtime
30
+ prerelease: false
31
+ version_requirements: !ruby/object:Gem::Requirement
32
+ none: false
33
+ requirements:
34
+ - - ! '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
19
37
  - !ruby/object:Gem::Dependency
20
38
  name: activesupport
21
39
  requirement: !ruby/object:Gem::Requirement
@@ -23,7 +41,7 @@ dependencies:
23
41
  requirements:
24
42
  - - ! '>='
25
43
  - !ruby/object:Gem::Version
26
- version: 1.0.0
44
+ version: 2.3.11
27
45
  type: :runtime
28
46
  prerelease: false
29
47
  version_requirements: !ruby/object:Gem::Requirement
@@ -31,7 +49,7 @@ dependencies:
31
49
  requirements:
32
50
  - - ! '>='
33
51
  - !ruby/object:Gem::Version
34
- version: 1.0.0
52
+ version: 2.3.11
35
53
  - !ruby/object:Gem::Dependency
36
54
  name: celluloid
37
55
  requirement: !ruby/object:Gem::Requirement
@@ -48,6 +66,54 @@ dependencies:
48
66
  - - ! '>='
49
67
  - !ruby/object:Gem::Version
50
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: jeweler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: stomp
87
+ requirement: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: appraisal
103
+ requirement: !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ type: :development
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ none: false
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
51
117
  description: ActiveMessaging is an attempt to bring the simplicity and elegance of
52
118
  rails development to the world of messaging. Messaging, (or event-driven architecture)
53
119
  is widely used for enterprise integration, with frameworks such as Java's JMS, and
@@ -59,10 +125,22 @@ extensions: []
59
125
  extra_rdoc_files:
60
126
  - README.md
61
127
  files:
128
+ - .travis.yml
129
+ - Appraisals
130
+ - Gemfile
131
+ - Gemfile.lock
62
132
  - README.md
63
133
  - Rakefile
64
134
  - VERSION
65
135
  - activemessaging.gemspec
136
+ - gemfiles/activesupport23.gemfile
137
+ - gemfiles/activesupport23.gemfile.lock
138
+ - gemfiles/activesupport30.gemfile
139
+ - gemfiles/activesupport30.gemfile.lock
140
+ - gemfiles/activesupport31.gemfile
141
+ - gemfiles/activesupport31.gemfile.lock
142
+ - gemfiles/activesupport32.gemfile
143
+ - gemfiles/activesupport32.gemfile.lock
66
144
  - generators/a13g_test_harness/a13g_test_harness_generator.rb
67
145
  - generators/a13g_test_harness/templates/active_messaging_test.rhtml
68
146
  - generators/a13g_test_harness/templates/active_messaging_test_controller.rb
@@ -73,7 +151,7 @@ files:
73
151
  - generators/filter/templates/filter_test.rb
74
152
  - generators/processor/USAGE
75
153
  - generators/processor/processor_generator.rb
76
- - generators/processor/templates/application.rb
154
+ - generators/processor/templates/application_processor.rb
77
155
  - generators/processor/templates/broker.yml
78
156
  - generators/processor/templates/jruby_poller
79
157
  - generators/processor/templates/messaging.rb
@@ -149,6 +227,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
227
  - - ! '>='
150
228
  - !ruby/object:Gem::Version
151
229
  version: '0'
230
+ segments:
231
+ - 0
232
+ hash: 115054191085730340
152
233
  required_rubygems_version: !ruby/object:Gem::Requirement
153
234
  none: false
154
235
  requirements: