beetle 0.1 → 0.2.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/README.rdoc +18 -8
- data/beetle.gemspec +37 -121
- data/bin/beetle +9 -0
- data/examples/README.rdoc +0 -2
- data/examples/rpc.rb +3 -2
- data/ext/mkrf_conf.rb +19 -0
- data/lib/beetle/base.rb +1 -8
- data/lib/beetle/client.rb +16 -14
- data/lib/beetle/commands/configuration_client.rb +73 -0
- data/lib/beetle/commands/configuration_server.rb +85 -0
- data/lib/beetle/commands.rb +30 -0
- data/lib/beetle/configuration.rb +70 -7
- data/lib/beetle/deduplication_store.rb +50 -38
- data/lib/beetle/handler.rb +2 -5
- data/lib/beetle/logging.rb +7 -0
- data/lib/beetle/message.rb +11 -13
- data/lib/beetle/publisher.rb +2 -2
- data/lib/beetle/r_c.rb +2 -1
- data/lib/beetle/redis_configuration_client.rb +136 -0
- data/lib/beetle/redis_configuration_server.rb +301 -0
- data/lib/beetle/redis_ext.rb +79 -0
- data/lib/beetle/redis_master_file.rb +35 -0
- data/lib/beetle/redis_server_info.rb +65 -0
- data/lib/beetle/subscriber.rb +4 -1
- data/lib/beetle.rb +2 -2
- data/test/beetle/configuration_test.rb +14 -2
- data/test/beetle/deduplication_store_test.rb +61 -43
- data/test/beetle/message_test.rb +28 -4
- data/test/beetle/redis_configuration_client_test.rb +97 -0
- data/test/beetle/redis_configuration_server_test.rb +278 -0
- data/test/beetle/redis_ext_test.rb +71 -0
- data/test/beetle/redis_master_file_test.rb +39 -0
- data/test/test_helper.rb +13 -1
- metadata +59 -50
- data/.gitignore +0 -5
- data/MIT-LICENSE +0 -20
- data/Rakefile +0 -114
- data/TODO +0 -7
- data/doc/redundant_queues.graffle +0 -7744
- data/etc/redis-master.conf +0 -189
- data/etc/redis-slave.conf +0 -189
- data/examples/redis_failover.rb +0 -65
- data/script/start_rabbit +0 -29
- data/snafu.rb +0 -55
- data/test/beetle/bla.rb +0 -0
- data/test/beetle.yml +0 -81
- data/tmp/master/.gitignore +0 -2
- data/tmp/slave/.gitignore +0 -3
metadata
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beetle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Kaes
|
8
8
|
- Pascal Friederich
|
9
9
|
- Ali Jelveh
|
10
|
+
- Sebastian Roebke
|
10
11
|
autorequire:
|
11
12
|
bindir: bin
|
12
13
|
cert_chain: []
|
13
14
|
|
14
|
-
date: 2010-
|
15
|
-
default_executable:
|
15
|
+
date: 2010-07-14 00:00:00 +02:00
|
16
|
+
default_executable: beetle
|
16
17
|
dependencies:
|
17
18
|
- !ruby/object:Gem::Dependency
|
18
19
|
name: uuid4r
|
@@ -42,7 +43,7 @@ dependencies:
|
|
42
43
|
requirements:
|
43
44
|
- - ">="
|
44
45
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0.
|
46
|
+
version: 2.0.3
|
46
47
|
version:
|
47
48
|
- !ruby/object:Gem::Dependency
|
48
49
|
name: amqp
|
@@ -64,6 +65,16 @@ dependencies:
|
|
64
65
|
- !ruby/object:Gem::Version
|
65
66
|
version: 2.3.4
|
66
67
|
version:
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: daemons
|
70
|
+
type: :runtime
|
71
|
+
version_requirement:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.0.10
|
77
|
+
version:
|
67
78
|
- !ruby/object:Gem::Dependency
|
68
79
|
name: mocha
|
69
80
|
type: :development
|
@@ -84,67 +95,71 @@ dependencies:
|
|
84
95
|
- !ruby/object:Gem::Version
|
85
96
|
version: "0"
|
86
97
|
version:
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: cucumber
|
100
|
+
type: :development
|
101
|
+
version_requirement:
|
102
|
+
version_requirements: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 0.7.2
|
107
|
+
version:
|
108
|
+
- !ruby/object:Gem::Dependency
|
109
|
+
name: daemon_controller
|
110
|
+
type: :development
|
111
|
+
version_requirement:
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: "0"
|
117
|
+
version:
|
87
118
|
description: A highly available, reliable messaging infrastructure
|
88
119
|
email: developers@xing.com
|
89
|
-
executables:
|
90
|
-
|
91
|
-
extensions:
|
92
|
-
|
120
|
+
executables:
|
121
|
+
- beetle
|
122
|
+
extensions:
|
123
|
+
- ext/mkrf_conf.rb
|
93
124
|
extra_rdoc_files:
|
94
125
|
- README.rdoc
|
95
|
-
- TODO
|
96
126
|
files:
|
97
|
-
- .gitignore
|
98
|
-
- MIT-LICENSE
|
99
|
-
- README.rdoc
|
100
|
-
- Rakefile
|
101
|
-
- TODO
|
102
|
-
- beetle.gemspec
|
103
|
-
- doc/redundant_queues.graffle
|
104
|
-
- etc/redis-master.conf
|
105
|
-
- etc/redis-slave.conf
|
106
|
-
- examples/README.rdoc
|
107
127
|
- examples/attempts.rb
|
108
128
|
- examples/handler_class.rb
|
109
129
|
- examples/handling_exceptions.rb
|
110
130
|
- examples/multiple_exchanges.rb
|
111
131
|
- examples/multiple_queues.rb
|
112
|
-
- examples/redis_failover.rb
|
113
132
|
- examples/redundant.rb
|
114
133
|
- examples/rpc.rb
|
115
134
|
- examples/simple.rb
|
116
|
-
-
|
135
|
+
- ext/mkrf_conf.rb
|
117
136
|
- lib/beetle/base.rb
|
118
137
|
- lib/beetle/client.rb
|
138
|
+
- lib/beetle/commands/configuration_client.rb
|
139
|
+
- lib/beetle/commands/configuration_server.rb
|
140
|
+
- lib/beetle/commands.rb
|
119
141
|
- lib/beetle/configuration.rb
|
120
142
|
- lib/beetle/deduplication_store.rb
|
121
143
|
- lib/beetle/handler.rb
|
144
|
+
- lib/beetle/logging.rb
|
122
145
|
- lib/beetle/message.rb
|
123
146
|
- lib/beetle/publisher.rb
|
124
147
|
- lib/beetle/r_c.rb
|
148
|
+
- lib/beetle/redis_configuration_client.rb
|
149
|
+
- lib/beetle/redis_configuration_server.rb
|
150
|
+
- lib/beetle/redis_ext.rb
|
151
|
+
- lib/beetle/redis_master_file.rb
|
152
|
+
- lib/beetle/redis_server_info.rb
|
125
153
|
- lib/beetle/subscriber.rb
|
126
|
-
-
|
127
|
-
-
|
128
|
-
-
|
129
|
-
-
|
130
|
-
- test/beetle/bla.rb
|
131
|
-
- test/beetle/client_test.rb
|
132
|
-
- test/beetle/configuration_test.rb
|
133
|
-
- test/beetle/deduplication_store_test.rb
|
134
|
-
- test/beetle/handler_test.rb
|
135
|
-
- test/beetle/message_test.rb
|
136
|
-
- test/beetle/publisher_test.rb
|
137
|
-
- test/beetle/r_c_test.rb
|
138
|
-
- test/beetle/subscriber_test.rb
|
139
|
-
- test/beetle_test.rb
|
140
|
-
- test/test_helper.rb
|
141
|
-
- tmp/master/.gitignore
|
142
|
-
- tmp/slave/.gitignore
|
154
|
+
- lib/beetle.rb
|
155
|
+
- beetle.gemspec
|
156
|
+
- examples/README.rdoc
|
157
|
+
- README.rdoc
|
143
158
|
has_rdoc: true
|
144
159
|
homepage: http://xing.github.com/beetle/
|
145
160
|
licenses: []
|
146
161
|
|
147
|
-
post_install_message:
|
162
|
+
post_install_message: " *********************************************************************************************\n\n If you're running a ruby version < 1.9 we silently installed the SystemTimer gem for you.\n See: http://ph7spot.com/musings/system-timer\n\n *********************************************************************************************\n"
|
148
163
|
rdoc_options:
|
149
164
|
- --charset=UTF-8
|
150
165
|
require_paths:
|
@@ -159,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
174
|
requirements:
|
160
175
|
- - ">="
|
161
176
|
- !ruby/object:Gem::Version
|
162
|
-
version:
|
177
|
+
version: 1.3.1
|
163
178
|
version:
|
164
179
|
requirements: []
|
165
180
|
|
@@ -170,7 +185,6 @@ specification_version: 3
|
|
170
185
|
summary: High Availability AMQP Messaging with Redundant Queues
|
171
186
|
test_files:
|
172
187
|
- test/beetle/base_test.rb
|
173
|
-
- test/beetle/bla.rb
|
174
188
|
- test/beetle/client_test.rb
|
175
189
|
- test/beetle/configuration_test.rb
|
176
190
|
- test/beetle/deduplication_store_test.rb
|
@@ -178,15 +192,10 @@ test_files:
|
|
178
192
|
- test/beetle/message_test.rb
|
179
193
|
- test/beetle/publisher_test.rb
|
180
194
|
- test/beetle/r_c_test.rb
|
195
|
+
- test/beetle/redis_configuration_client_test.rb
|
196
|
+
- test/beetle/redis_configuration_server_test.rb
|
197
|
+
- test/beetle/redis_ext_test.rb
|
198
|
+
- test/beetle/redis_master_file_test.rb
|
181
199
|
- test/beetle/subscriber_test.rb
|
182
200
|
- test/beetle_test.rb
|
183
201
|
- test/test_helper.rb
|
184
|
-
- examples/attempts.rb
|
185
|
-
- examples/handler_class.rb
|
186
|
-
- examples/handling_exceptions.rb
|
187
|
-
- examples/multiple_exchanges.rb
|
188
|
-
- examples/multiple_queues.rb
|
189
|
-
- examples/redis_failover.rb
|
190
|
-
- examples/redundant.rb
|
191
|
-
- examples/rpc.rb
|
192
|
-
- examples/simple.rb
|
data/MIT-LICENSE
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2010 XING AG
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
a copy of this software and associated documentation files (the
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be
|
12
|
-
included in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
DELETED
@@ -1,114 +0,0 @@
|
|
1
|
-
require 'rake'
|
2
|
-
require 'rake/testtask'
|
3
|
-
require 'lib/beetle'
|
4
|
-
require 'rcov/rcovtask'
|
5
|
-
|
6
|
-
namespace :test do
|
7
|
-
namespace :coverage do
|
8
|
-
desc "Delete aggregate coverage data."
|
9
|
-
task(:clean) { rm_f "coverage.data" }
|
10
|
-
end
|
11
|
-
|
12
|
-
desc 'Aggregate code coverage'
|
13
|
-
task :coverage => "test:coverage:clean"
|
14
|
-
|
15
|
-
Rcov::RcovTask.new(:coverage) do |t|
|
16
|
-
t.libs << "test"
|
17
|
-
t.test_files = FileList["test/**/*_test.rb"]
|
18
|
-
t.output_dir = "test/coverage"
|
19
|
-
t.verbose = true
|
20
|
-
t.rcov_opts << "--exclude '.*' --include-file 'lib/beetle/'"
|
21
|
-
end
|
22
|
-
task :coverage do
|
23
|
-
system 'open test/coverage/index.html'
|
24
|
-
end if RUBY_PLATFORM =~ /darwin/
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
namespace :beetle do
|
29
|
-
task :test do
|
30
|
-
Beetle::Client.new.test
|
31
|
-
end
|
32
|
-
|
33
|
-
task :trace do
|
34
|
-
trap('INT'){ EM.stop_event_loop }
|
35
|
-
Beetle::Client.new.trace
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
namespace :rabbit do
|
40
|
-
def start(node_name, port)
|
41
|
-
script = File.expand_path(File.dirname(__FILE__)+"/script/start_rabbit")
|
42
|
-
puts "starting rabbit #{node_name} on port #{port}"
|
43
|
-
puts "type ^C a RETURN to abort"
|
44
|
-
sleep 1
|
45
|
-
exec "sudo #{script} #{node_name} #{port}"
|
46
|
-
end
|
47
|
-
desc "start rabbit instance 1"
|
48
|
-
task :start1 do
|
49
|
-
start "rabbit1", 5672
|
50
|
-
end
|
51
|
-
desc "start rabbit instance 2"
|
52
|
-
task :start2 do
|
53
|
-
start "rabbit2", 5673
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
namespace :redis do
|
58
|
-
def config_file(suffix)
|
59
|
-
File.expand_path(File.dirname(__FILE__)+"/etc/redis-#{suffix}.conf")
|
60
|
-
end
|
61
|
-
desc "start main redis"
|
62
|
-
task :start1 do
|
63
|
-
exec "redis-server #{config_file(:master)}"
|
64
|
-
end
|
65
|
-
desc "start slave redis"
|
66
|
-
task :start2 do
|
67
|
-
exec "redis-server #{config_file(:slave)}"
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
task :default do
|
72
|
-
Rake::Task[:test].invoke
|
73
|
-
end
|
74
|
-
|
75
|
-
Rake::TestTask.new do |t|
|
76
|
-
t.libs << "test"
|
77
|
-
t.test_files = FileList['test/**/*_test.rb']
|
78
|
-
t.verbose = true
|
79
|
-
end
|
80
|
-
|
81
|
-
require 'rake/rdoctask'
|
82
|
-
|
83
|
-
Rake::RDocTask.new do |rdoc|
|
84
|
-
rdoc.rdoc_dir = 'site/rdoc'
|
85
|
-
rdoc.title = 'Beetle'
|
86
|
-
rdoc.options << '--line-numbers' << '--inline-source' << '--quiet'
|
87
|
-
rdoc.rdoc_files.include('README.rdoc')
|
88
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
89
|
-
end
|
90
|
-
|
91
|
-
begin
|
92
|
-
require 'jeweler'
|
93
|
-
Jeweler::Tasks.new do |gemspec|
|
94
|
-
gemspec.name = 'beetle'
|
95
|
-
gemspec.version = '0.1'
|
96
|
-
gemspec.summary = "High Availability AMQP Messaging with Redundant Queues"
|
97
|
-
gemspec.description = "A highly available, reliable messaging infrastructure"
|
98
|
-
gemspec.email = "developers@xing.com"
|
99
|
-
gemspec.homepage = "http://xing.github.com/beetle/"
|
100
|
-
gemspec.authors = ["Stefan Kaes", "Pascal Friederich", "Ali Jelveh"]
|
101
|
-
gemspec.add_dependency('uuid4r', '>=0.1.1')
|
102
|
-
gemspec.add_dependency('bunny', '>=0.6.0')
|
103
|
-
gemspec.add_dependency('redis', '>=0.1.2')
|
104
|
-
gemspec.add_dependency('amqp', '>=0.6.7')
|
105
|
-
gemspec.add_dependency('activesupport', '>=2.3.4')
|
106
|
-
|
107
|
-
gemspec.add_development_dependency('mocha')
|
108
|
-
gemspec.add_development_dependency('rcov')
|
109
|
-
end
|
110
|
-
Jeweler::GemcutterTasks.new
|
111
|
-
rescue LoadError
|
112
|
-
# puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
113
|
-
end
|
114
|
-
|
data/TODO
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
- docs
|
2
|
-
- example scripts
|
3
|
-
- let handlers decide dynamically how long to wait for a retry
|
4
|
-
- review log levels in all logger statements
|
5
|
-
- optimize redis accesses:
|
6
|
-
- combine multiple redis accesses into one
|
7
|
-
- ack redundant messages with attempts limit 1 immediately?
|