rmb-rails 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. data/README +30 -0
  2. data/README.rdoc +25 -2
  3. data/README.rdoc.txt +30 -0
  4. data/VERSION +1 -1
  5. data/rmb-rails.gemspec +6 -3
  6. metadata +6 -2
data/README ADDED
@@ -0,0 +1,30 @@
1
+ 
2
+ = rmb-rails: RESTful Message Beans for Ruby on Rails
3
+
4
+ = Introduction
5
+
6
+ During a lengthy career in software development, and later as an enterprise architect, I saw a lot of message broker deployments in many large corporations. These systems were used primarily to knit together disparate computing 'silos' into a single fabric, as primarily an integration tool. The implementations varied significantly, some were well engineered and managed, others were basket cases of poor planning. One significant problem that was common in many of these deployments was the requirement to add broker subscriber behavior inside existing applications. Many of these applications were single threaded (often written in COBOL) and had no real ability to construct a thread to wait on some subscriber.receive method. This issue was resolved by a variety of means, many of which involved polling the subscriber queue periodically, picking up some or all of the messages waiting, and processing them through the application. Polling does not scale well. If the application had many worker instances, they all tended to compete with one another and together, consumed a lot of CPU time in polling loops. If you slowed down the polling frequency, then you got latency problems where messages sat in the queue when the readers were sleeping. The real solution was to construct some form of subscriber adapter that could inject messages into the applications' standard incoming data stream. The Enterprise Java Message Bean is a good example of this kind of adapter. Message arrival on a designated queue or topic caused the activation of a Message Bean within the EJB container, allowing full participation in transactions within the container.
7
+
8
+ There is a real parallel between a Java EJB application and a Ruby-on-Rails application, and the Rails environment needs a method to get incoming message broker subscriptions injected directly into the main Rails data stream. So, how can we convert an MQ message into an http request? The rubygem rmb-rails addresses this issue.
9
+
10
+ = Theory of Operation
11
+
12
+ As stated above, experience shows that polling a queue to pick up messages waiting there does not scale well. I decided to create an infrastructure where daemon processes, called listeners, can connect to a specified message broker, receive messages from that broker, and then forward them on to a standard Rails controller using a standard Rails protocol. In other words, the daemon listener processes act as browsers doing a form of file upload. The receiving rails controller is built on standard REST principles, and fits easily into any Rails app.
13
+
14
+ = Component classes
15
+ * module RMB
16
+ * class Properties
17
+ * class ListenerClient
18
+ * class ListenerMain
19
+ * class Subscriber
20
+ * class Submitter
21
+ * class StompSubscriber
22
+ * class MechanizeSubmitter
23
+
24
+ = Installation
25
+
26
+ = Usage
27
+
28
+ == Copyright
29
+
30
+ Copyright (c) 2009 Ken Burgett. See LICENSE for details.
@@ -1,6 +1,29 @@
1
- = rmb-rails
1
+ 
2
+ = rmb-rails: RESTful Message Beans for Ruby on Rails
2
3
 
3
- Description goes here.
4
+ = Introduction
5
+
6
+ During a lengthy career in software development, and later as an enterprise architect, I saw a lot of message broker deployments in many large corporations. These systems were used primarily to knit together disparate computing 'silos' into a single fabric, as primarily an integration tool. The implementations varied significantly, some were well engineered and managed, others were basket cases of poor planning. One significant problem that was common in many of these deployments was the requirement to add broker subscriber behavior inside existing applications. Many of these applications were single threaded (often written in COBOL) and had no real ability to construct a thread to wait on some subscriber.receive method. This issue was resolved by a variety of means, many of which involved polling the subscriber queue periodically, picking up some or all of the messages waiting, and processing them through the application. Polling does not scale well. If the application had many worker instances, they all tended to compete with one another and together, consumed a lot of CPU time in polling loops. If you slowed down the polling frequency, then you got latency problems where messages sat in the queue when the readers were sleeping. The real solution was to construct some form of subscriber adapter that could inject messages into the applications' standard incoming data stream. The Enterprise Java Message Bean is a good example of this kind of adapter. Message arrival on a designated queue or topic caused the activation of a Message Bean within the EJB container, allowing full participation in transactions within the container.
7
+
8
+ There is a real parallel between a Java EJB application and a Ruby-on-Rails application, and the Rails environment needs a method to get incoming message broker subscriptions injected directly into the main Rails data stream. So, how can we convert an MQ message into an http request? The rubygem rmb-rails addresses this issue.
9
+
10
+ = Theory of Operation
11
+
12
+ As stated above, experience shows that polling a queue to pick up messages waiting there does not scale well. I decided to create an infrastructure where daemon processes, called listeners, can connect to a specified message broker, receive messages from that broker, and then forward them on to a standard Rails controller using a standard Rails protocol. In other words, the daemon listener processes act as browsers doing a form of file upload. The receiving rails controller is built on standard REST principles, and fits easily into any Rails app.
13
+
14
+ = Component classes
15
+ * module RMB
16
+ * class Properties
17
+ * class ListenerClient
18
+ * class ListenerMain
19
+ * class Subscriber
20
+ * class Submitter
21
+ * class StompSubscriber
22
+ * class MechanizeSubmitter
23
+
24
+ = Installation
25
+
26
+ = Usage
4
27
 
5
28
  == Copyright
6
29
 
@@ -0,0 +1,30 @@
1
+ 
2
+ = rmb-rails: RESTful Message Beans for Ruby on Rails
3
+
4
+ = Introduction
5
+
6
+ During a lengthy career in software development, and later as an enterprise architect, I saw a lot of message broker deployments in many large corporations. These systems were used primarily to knit together disparate computing 'silos' into a single fabric, as primarily an integration tool. The implementations varied significantly, some were well engineered and managed, others were basket cases of poor planning. One significant problem that was common in many of these deployments was the requirement to add broker subscriber behavior inside existing applications. Many of these applications were single threaded (often written in COBOL) and had no real ability to construct a thread to wait on some subscriber.receive method. This issue was resolved by a variety of means, many of which involved polling the subscriber queue periodically, picking up some or all of the messages waiting, and processing them through the application. Polling does not scale well. If the application had many worker instances, they all tended to compete with one another and together, consumed a lot of CPU time in polling loops. If you slowed down the polling frequency, then you got latency problems where messages sat in the queue when the readers were sleeping. The real solution was to construct some form of subscriber adapter that could inject messages into the applications' standard incoming data stream. The Enterprise Java Message Bean is a good example of this kind of adapter. Message arrival on a designated queue or topic caused the activation of a Message Bean within the EJB container, allowing full participation in transactions within the container.
7
+
8
+ There is a real parallel between a Java EJB application and a Ruby-on-Rails application, and the Rails environment needs a method to get incoming message broker subscriptions injected directly into the main Rails data stream. So, how can we convert an MQ message into an http request? The rubygem rmb-rails addresses this issue.
9
+
10
+ = Theory of Operation
11
+
12
+ As stated above, experience shows that polling a queue to pick up messages waiting there does not scale well. I decided to create an infrastructure where daemon processes, called listeners, can connect to a specified message broker, receive messages from that broker, and then forward them on to a standard Rails controller using a standard Rails protocol. In other words, the daemon listener processes act as browsers doing a form of file upload. The receiving rails controller is built on standard REST principles, and fits easily into any Rails app.
13
+
14
+ = Component classes
15
+ * module RMB
16
+ * class Properties
17
+ * class ListenerClient
18
+ * class ListenerMain
19
+ * class Subscriber
20
+ * class Submitter
21
+ * class StompSubscriber
22
+ * class MechanizeSubmitter
23
+
24
+ = Installation
25
+
26
+ = Usage
27
+
28
+ == Copyright
29
+
30
+ Copyright (c) 2009 Ken Burgett. See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.7
1
+ 0.0.8
@@ -2,20 +2,23 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{rmb-rails}
5
- s.version = "0.0.7"
5
+ s.version = "0.0.8"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Ken Burgett"]
9
- s.date = %q{2009-07-22}
9
+ s.date = %q{2009-07-23}
10
10
  s.email = %q{keburgett@gmail.com}
11
11
  s.extra_rdoc_files = [
12
12
  "LICENSE",
13
- "README.rdoc"
13
+ "README",
14
+ "README.rdoc",
15
+ "README.rdoc.txt"
14
16
  ]
15
17
  s.files = [
16
18
  ".document",
17
19
  ".gitignore",
18
20
  "LICENSE",
21
+ "README",
19
22
  "README.rdoc",
20
23
  "Rakefile",
21
24
  "VERSION",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rmb-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Burgett
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-22 00:00:00 -07:00
12
+ date: 2009-07-23 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -21,11 +21,14 @@ extensions: []
21
21
 
22
22
  extra_rdoc_files:
23
23
  - LICENSE
24
+ - README
24
25
  - README.rdoc
26
+ - README.rdoc.txt
25
27
  files:
26
28
  - .document
27
29
  - .gitignore
28
30
  - LICENSE
31
+ - README
29
32
  - README.rdoc
30
33
  - Rakefile
31
34
  - VERSION
@@ -41,6 +44,7 @@ files:
41
44
  - rmb-rails.gemspec
42
45
  - test/rmb-rails_test.rb
43
46
  - test/test_helper.rb
47
+ - README.rdoc.txt
44
48
  has_rdoc: true
45
49
  homepage: http://github.com/explainer/rmb-rails
46
50
  post_install_message: