euston-daemons 1.0.4-java → 1.1.0-java

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.
Files changed (84) hide show
  1. data/Gemfile +3 -1
  2. data/Rakefile +2 -3
  3. data/euston-daemons.gemspec +61 -26
  4. data/lib/euston-daemons/command_processor_daemon/config/environment.rb +27 -18
  5. data/lib/euston-daemons/command_processor_daemon/lib/clients/command_handler.rb +37 -0
  6. data/lib/euston-daemons/command_processor_daemon/lib/command_handlers/retry_failed_message.rb +35 -0
  7. data/lib/euston-daemons/command_processor_daemon/lib/daemon.rb +11 -32
  8. data/lib/euston-daemons/command_processor_daemon/lib/mongo_models/failed_message.rb +34 -0
  9. data/lib/euston-daemons/command_processor_daemon/rake_task.rb +15 -13
  10. data/lib/euston-daemons/euston/daemon.rb +93 -0
  11. data/lib/euston-daemons/euston/daemon_client.rb +24 -0
  12. data/lib/euston-daemons/euston/daemon_component.rb +65 -0
  13. data/lib/euston-daemons/euston/daemon_environment.rb +54 -0
  14. data/lib/euston-daemons/event_processor_daemon/config/environment.rb +27 -16
  15. data/lib/euston-daemons/event_processor_daemon/lib/clients/event_handler.rb +42 -0
  16. data/lib/euston-daemons/event_processor_daemon/lib/daemon.rb +13 -60
  17. data/lib/euston-daemons/event_processor_daemon/lib/event_handlers/message_failure.rb +27 -0
  18. data/lib/euston-daemons/event_processor_daemon/rake_task.rb +18 -16
  19. data/lib/euston-daemons/message_buffer_daemon/config/environment.rb +39 -25
  20. data/lib/euston-daemons/message_buffer_daemon/lib/clients/command_buffer_cleanup.rb +9 -0
  21. data/lib/euston-daemons/message_buffer_daemon/lib/clients/command_buffer_publisher.rb +9 -0
  22. data/lib/euston-daemons/message_buffer_daemon/lib/clients/command_logger.rb +9 -0
  23. data/lib/euston-daemons/message_buffer_daemon/lib/clients/euston_exchange_accessors.rb +15 -0
  24. data/lib/euston-daemons/message_buffer_daemon/lib/clients/event_buffer_cleanup.rb +9 -0
  25. data/lib/euston-daemons/message_buffer_daemon/lib/clients/event_buffer_publisher.rb +9 -0
  26. data/lib/euston-daemons/message_buffer_daemon/lib/clients/event_logger.rb +9 -0
  27. data/lib/euston-daemons/message_buffer_daemon/lib/clients/event_store_dispatcher.rb +25 -0
  28. data/lib/euston-daemons/message_buffer_daemon/lib/clients/message_buffer_cleanup.rb +52 -0
  29. data/lib/euston-daemons/message_buffer_daemon/lib/clients/message_buffer_publisher.rb +37 -0
  30. data/lib/euston-daemons/message_buffer_daemon/lib/clients/message_logger.rb +45 -0
  31. data/lib/euston-daemons/message_buffer_daemon/lib/clients/mongo_model_accessors.rb +21 -0
  32. data/lib/euston-daemons/message_buffer_daemon/lib/daemon.rb +11 -42
  33. data/lib/euston-daemons/message_buffer_daemon/lib/mongo_models/command_buffer.rb +11 -0
  34. data/lib/euston-daemons/message_buffer_daemon/lib/mongo_models/command_log.rb +11 -0
  35. data/lib/euston-daemons/message_buffer_daemon/lib/mongo_models/event_buffer.rb +11 -0
  36. data/lib/euston-daemons/message_buffer_daemon/lib/mongo_models/event_log.rb +11 -0
  37. data/lib/euston-daemons/message_buffer_daemon/lib/mongo_models/message_buffer.rb +57 -0
  38. data/lib/euston-daemons/message_buffer_daemon/lib/{read_model → mongo_models}/message_log.rb +4 -11
  39. data/lib/euston-daemons/message_buffer_daemon/rake_task.rb +13 -11
  40. data/lib/euston-daemons/rake_task.rb +41 -65
  41. data/lib/euston-daemons/rake_tasks.rb +5 -5
  42. data/lib/euston-daemons/snapshot_daemon/lib/clients/snapshotter.rb +43 -0
  43. data/lib/euston-daemons/version.rb +1 -1
  44. data/lib/euston-daemons.rb +6 -1
  45. data/sample/Rakefile +63 -0
  46. data/sample/amqp_config.yml +14 -0
  47. data/sample/command_handlers.rb +17 -0
  48. data/sample/command_processor_daemon_config.yml +9 -0
  49. data/sample/event_handlers.rb +21 -0
  50. data/sample/event_processor_daemon_config.yml +8 -0
  51. data/sample/message_buffer_daemon_config.yml +8 -0
  52. data/sample/mongoid_config.yml +13 -0
  53. data/sample/pids/.placeholder +0 -0
  54. data/spec/daemons/command_buffer_publisher_spec.rb +110 -0
  55. data/spec/daemons/command_handler_spec.rb +48 -0
  56. data/spec/daemons/event_handler_spec.rb +55 -0
  57. data/spec/daemons/snapshot_client_spec.rb +98 -0
  58. data/spec/spec_helper.rb +77 -0
  59. data/spec/support/factories/commands.rb +16 -0
  60. data/spec/support/factories/commit.rb +7 -0
  61. data/spec/support/factories/event_message.rb +12 -0
  62. data/spec/support/factories/events.rb +8 -0
  63. data/spec/support/filters.rb +14 -0
  64. data/spec/support/sample_model/commands.rb +14 -0
  65. data/spec/support/sample_model/counter.rb +36 -0
  66. data/spec/support/sample_model/counter2.rb +46 -0
  67. data/spec/support/stub_retrying_subscription.rb +9 -0
  68. metadata +134 -67
  69. data/lib/euston-daemons/command_processor_daemon/lib/components/command_handler_component.rb +0 -56
  70. data/lib/euston-daemons/command_processor_daemon/lib/settings.rb +0 -22
  71. data/lib/euston-daemons/event_processor_daemon/lib/components/event_handler_component.rb +0 -58
  72. data/lib/euston-daemons/event_processor_daemon/lib/settings.rb +0 -26
  73. data/lib/euston-daemons/framework/basic_component.rb +0 -33
  74. data/lib/euston-daemons/framework/channel_thread.rb +0 -22
  75. data/lib/euston-daemons/framework/component_shutdown.rb +0 -22
  76. data/lib/euston-daemons/framework/daemon.rb +0 -27
  77. data/lib/euston-daemons/framework/handler_bindings_component.rb +0 -56
  78. data/lib/euston-daemons/framework/queue.rb +0 -71
  79. data/lib/euston-daemons/message_buffer_daemon/lib/components/buffer_component.rb +0 -73
  80. data/lib/euston-daemons/message_buffer_daemon/lib/components/event_store_component.rb +0 -52
  81. data/lib/euston-daemons/message_buffer_daemon/lib/message_logger.rb +0 -54
  82. data/lib/euston-daemons/message_buffer_daemon/lib/publisher.rb +0 -56
  83. data/lib/euston-daemons/message_buffer_daemon/lib/settings.rb +0 -14
  84. data/lib/euston-daemons/message_buffer_daemon/lib/subscriber.rb +0 -60
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: euston-daemons
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.4
5
+ version: 1.1.0
6
6
  platform: java
7
7
  authors:
8
8
  - Lee Henson
@@ -10,161 +10,194 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-09-27 00:00:00.000000000 +01:00
13
+ date: 2011-10-03 00:00:00.000000000 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activemodel
18
- version_requirements: &2334 !ruby/object:Gem::Requirement
18
+ version_requirements: &2198 !ruby/object:Gem::Requirement
19
19
  requirements:
20
20
  - - ~>
21
21
  - !ruby/object:Gem::Version
22
22
  version: 3.0.0
23
23
  none: false
24
- requirement: *2334
24
+ requirement: *2198
25
25
  prerelease: false
26
26
  type: :runtime
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
- version_requirements: &2352 !ruby/object:Gem::Requirement
29
+ version_requirements: &2216 !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: 3.0.0
34
34
  none: false
35
- requirement: *2352
35
+ requirement: *2216
36
36
  prerelease: false
37
37
  type: :runtime
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: erb-yaml
40
- version_requirements: &2368 !ruby/object:Gem::Requirement
40
+ version_requirements: &2232 !ruby/object:Gem::Requirement
41
41
  requirements:
42
42
  - - ~>
43
43
  - !ruby/object:Gem::Version
44
44
  version: 1.0.0
45
45
  none: false
46
- requirement: *2368
46
+ requirement: *2232
47
47
  prerelease: false
48
48
  type: :runtime
49
49
  - !ruby/object:Gem::Dependency
50
- name: hollywood
51
- version_requirements: &2384 !ruby/object:Gem::Requirement
50
+ name: euston
51
+ version_requirements: &2248 !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - ~>
54
54
  - !ruby/object:Gem::Version
55
- version: 1.0.0
55
+ version: 1.1.0
56
56
  none: false
57
- requirement: *2384
57
+ requirement: *2248
58
58
  prerelease: false
59
59
  type: :runtime
60
60
  - !ruby/object:Gem::Dependency
61
- name: i18n
62
- version_requirements: &2400 !ruby/object:Gem::Requirement
61
+ name: euston-eventstore
62
+ version_requirements: &2264 !ruby/object:Gem::Requirement
63
63
  requirements:
64
64
  - - ~>
65
65
  - !ruby/object:Gem::Version
66
- version: 0.5.0
66
+ version: 1.1.0
67
67
  none: false
68
- requirement: *2400
68
+ requirement: *2264
69
69
  prerelease: false
70
70
  type: :runtime
71
71
  - !ruby/object:Gem::Dependency
72
- name: require_all
73
- version_requirements: &2416 !ruby/object:Gem::Requirement
72
+ name: euston-rabbitmq
73
+ version_requirements: &2280 !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: 1.2.0
77
+ version: 1.1.0
78
78
  none: false
79
- requirement: *2416
79
+ requirement: *2280
80
80
  prerelease: false
81
81
  type: :runtime
82
82
  - !ruby/object:Gem::Dependency
83
- name: safely
84
- version_requirements: &2432 !ruby/object:Gem::Requirement
83
+ name: hollywood
84
+ version_requirements: &2296 !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - ~>
87
87
  - !ruby/object:Gem::Version
88
- version: 0.3.0
88
+ version: 1.0.0
89
89
  none: false
90
- requirement: *2432
90
+ requirement: *2296
91
91
  prerelease: false
92
92
  type: :runtime
93
93
  - !ruby/object:Gem::Dependency
94
- name: euston-rabbitmq
95
- version_requirements: &2448 !ruby/object:Gem::Requirement
94
+ name: i18n
95
+ version_requirements: &2312 !ruby/object:Gem::Requirement
96
96
  requirements:
97
97
  - - ~>
98
98
  - !ruby/object:Gem::Version
99
- version: 1.0.0
99
+ version: 0.5.0
100
+ none: false
101
+ requirement: *2312
102
+ prerelease: false
103
+ type: :runtime
104
+ - !ruby/object:Gem::Dependency
105
+ name: safely
106
+ version_requirements: &2328 !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 0.3.0
100
111
  none: false
101
- requirement: *2448
112
+ requirement: *2328
102
113
  prerelease: false
103
114
  type: :runtime
104
115
  - !ruby/object:Gem::Dependency
105
116
  name: jessica
106
- version_requirements: &2464 !ruby/object:Gem::Requirement
117
+ version_requirements: &2344 !ruby/object:Gem::Requirement
107
118
  requirements:
108
119
  - - ~>
109
120
  - !ruby/object:Gem::Version
110
121
  version: 1.0.0
111
122
  none: false
112
- requirement: *2464
123
+ requirement: *2344
113
124
  prerelease: false
114
125
  type: :runtime
115
126
  - !ruby/object:Gem::Dependency
116
127
  name: jmongo
117
- version_requirements: &2480 !ruby/object:Gem::Requirement
128
+ version_requirements: &2360 !ruby/object:Gem::Requirement
118
129
  requirements:
119
130
  - - ~>
120
131
  - !ruby/object:Gem::Version
121
- version: 1.0.0
132
+ version: 1.1.0
122
133
  none: false
123
- requirement: *2480
134
+ requirement: *2360
124
135
  prerelease: false
125
136
  type: :runtime
126
137
  - !ruby/object:Gem::Dependency
127
- name: euston
128
- version_requirements: &2496 !ruby/object:Gem::Requirement
138
+ name: awesome_print
139
+ version_requirements: &2376 !ruby/object:Gem::Requirement
129
140
  requirements:
130
141
  - - ~>
131
142
  - !ruby/object:Gem::Version
132
- version: 1.0.0
143
+ version: 0.4.0
133
144
  none: false
134
- requirement: *2496
145
+ requirement: *2376
135
146
  prerelease: false
136
- type: :runtime
147
+ type: :development
137
148
  - !ruby/object:Gem::Dependency
138
- name: euston-eventstore
139
- version_requirements: &2512 !ruby/object:Gem::Requirement
149
+ name: cranky
150
+ version_requirements: &2394 !ruby/object:Gem::Requirement
140
151
  requirements:
141
152
  - - ~>
142
153
  - !ruby/object:Gem::Version
143
- version: 1.0.0
154
+ version: 0.2.0
144
155
  none: false
145
- requirement: *2512
156
+ requirement: *2394
146
157
  prerelease: false
147
- type: :runtime
158
+ type: :development
148
159
  - !ruby/object:Gem::Dependency
149
- name: mongoid-glue
150
- version_requirements: &2528 !ruby/object:Gem::Requirement
160
+ name: ffaker
161
+ version_requirements: &2410 !ruby/object:Gem::Requirement
151
162
  requirements:
152
163
  - - ~>
153
164
  - !ruby/object:Gem::Version
154
- version: 1.0.0
165
+ version: 1.8.0
155
166
  none: false
156
- requirement: *2528
167
+ requirement: *2410
157
168
  prerelease: false
158
- type: :runtime
169
+ type: :development
170
+ - !ruby/object:Gem::Dependency
171
+ name: fuubar
172
+ version_requirements: &2426 !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ~>
175
+ - !ruby/object:Gem::Version
176
+ version: 0.0.0
177
+ none: false
178
+ requirement: *2426
179
+ prerelease: false
180
+ type: :development
181
+ - !ruby/object:Gem::Dependency
182
+ name: rabbitmqadmin-cli
183
+ version_requirements: &2442 !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ~>
186
+ - !ruby/object:Gem::Version
187
+ version: 1.0.2
188
+ none: false
189
+ requirement: *2442
190
+ prerelease: false
191
+ type: :development
159
192
  - !ruby/object:Gem::Dependency
160
193
  name: rspec
161
- version_requirements: &2544 !ruby/object:Gem::Requirement
194
+ version_requirements: &2458 !ruby/object:Gem::Requirement
162
195
  requirements:
163
196
  - - ~>
164
197
  - !ruby/object:Gem::Version
165
198
  version: 2.6.0
166
199
  none: false
167
- requirement: *2544
200
+ requirement: *2458
168
201
  prerelease: false
169
202
  type: :development
170
203
  description: ''
@@ -181,34 +214,68 @@ files:
181
214
  - euston-daemons.gemspec
182
215
  - lib/euston-daemons.rb
183
216
  - lib/euston-daemons/command_processor_daemon/config/environment.rb
184
- - lib/euston-daemons/command_processor_daemon/lib/components/command_handler_component.rb
217
+ - lib/euston-daemons/command_processor_daemon/lib/clients/command_handler.rb
218
+ - lib/euston-daemons/command_processor_daemon/lib/command_handlers/retry_failed_message.rb
185
219
  - lib/euston-daemons/command_processor_daemon/lib/daemon.rb
186
- - lib/euston-daemons/command_processor_daemon/lib/settings.rb
220
+ - lib/euston-daemons/command_processor_daemon/lib/mongo_models/failed_message.rb
187
221
  - lib/euston-daemons/command_processor_daemon/rake_task.rb
222
+ - lib/euston-daemons/euston/daemon.rb
223
+ - lib/euston-daemons/euston/daemon_client.rb
224
+ - lib/euston-daemons/euston/daemon_component.rb
225
+ - lib/euston-daemons/euston/daemon_environment.rb
188
226
  - lib/euston-daemons/event_processor_daemon/config/environment.rb
189
- - lib/euston-daemons/event_processor_daemon/lib/components/event_handler_component.rb
227
+ - lib/euston-daemons/event_processor_daemon/lib/clients/event_handler.rb
190
228
  - lib/euston-daemons/event_processor_daemon/lib/daemon.rb
191
- - lib/euston-daemons/event_processor_daemon/lib/settings.rb
229
+ - lib/euston-daemons/event_processor_daemon/lib/event_handlers/message_failure.rb
192
230
  - lib/euston-daemons/event_processor_daemon/rake_task.rb
193
- - lib/euston-daemons/framework/basic_component.rb
194
- - lib/euston-daemons/framework/channel_thread.rb
195
- - lib/euston-daemons/framework/component_shutdown.rb
196
- - lib/euston-daemons/framework/daemon.rb
197
- - lib/euston-daemons/framework/handler_bindings_component.rb
198
- - lib/euston-daemons/framework/queue.rb
199
231
  - lib/euston-daemons/message_buffer_daemon/config/environment.rb
200
- - lib/euston-daemons/message_buffer_daemon/lib/components/buffer_component.rb
201
- - lib/euston-daemons/message_buffer_daemon/lib/components/event_store_component.rb
232
+ - lib/euston-daemons/message_buffer_daemon/lib/clients/command_buffer_cleanup.rb
233
+ - lib/euston-daemons/message_buffer_daemon/lib/clients/command_buffer_publisher.rb
234
+ - lib/euston-daemons/message_buffer_daemon/lib/clients/command_logger.rb
235
+ - lib/euston-daemons/message_buffer_daemon/lib/clients/euston_exchange_accessors.rb
236
+ - lib/euston-daemons/message_buffer_daemon/lib/clients/event_buffer_cleanup.rb
237
+ - lib/euston-daemons/message_buffer_daemon/lib/clients/event_buffer_publisher.rb
238
+ - lib/euston-daemons/message_buffer_daemon/lib/clients/event_logger.rb
239
+ - lib/euston-daemons/message_buffer_daemon/lib/clients/event_store_dispatcher.rb
240
+ - lib/euston-daemons/message_buffer_daemon/lib/clients/message_buffer_cleanup.rb
241
+ - lib/euston-daemons/message_buffer_daemon/lib/clients/message_buffer_publisher.rb
242
+ - lib/euston-daemons/message_buffer_daemon/lib/clients/message_logger.rb
243
+ - lib/euston-daemons/message_buffer_daemon/lib/clients/mongo_model_accessors.rb
202
244
  - lib/euston-daemons/message_buffer_daemon/lib/daemon.rb
203
- - lib/euston-daemons/message_buffer_daemon/lib/message_logger.rb
204
- - lib/euston-daemons/message_buffer_daemon/lib/publisher.rb
205
- - lib/euston-daemons/message_buffer_daemon/lib/read_model/message_log.rb
206
- - lib/euston-daemons/message_buffer_daemon/lib/settings.rb
207
- - lib/euston-daemons/message_buffer_daemon/lib/subscriber.rb
245
+ - lib/euston-daemons/message_buffer_daemon/lib/mongo_models/command_buffer.rb
246
+ - lib/euston-daemons/message_buffer_daemon/lib/mongo_models/command_log.rb
247
+ - lib/euston-daemons/message_buffer_daemon/lib/mongo_models/event_buffer.rb
248
+ - lib/euston-daemons/message_buffer_daemon/lib/mongo_models/event_log.rb
249
+ - lib/euston-daemons/message_buffer_daemon/lib/mongo_models/message_buffer.rb
250
+ - lib/euston-daemons/message_buffer_daemon/lib/mongo_models/message_log.rb
208
251
  - lib/euston-daemons/message_buffer_daemon/rake_task.rb
209
252
  - lib/euston-daemons/rake_task.rb
210
253
  - lib/euston-daemons/rake_tasks.rb
254
+ - lib/euston-daemons/snapshot_daemon/lib/clients/snapshotter.rb
211
255
  - lib/euston-daemons/version.rb
256
+ - sample/Rakefile
257
+ - sample/amqp_config.yml
258
+ - sample/command_handlers.rb
259
+ - sample/command_processor_daemon_config.yml
260
+ - sample/event_handlers.rb
261
+ - sample/event_processor_daemon_config.yml
262
+ - sample/message_buffer_daemon_config.yml
263
+ - sample/mongoid_config.yml
264
+ - sample/pids/.placeholder
265
+ - spec/daemons/command_buffer_publisher_spec.rb
266
+ - spec/daemons/command_handler_spec.rb
267
+ - spec/daemons/event_handler_spec.rb
268
+ - spec/daemons/snapshot_client_spec.rb
269
+ - spec/spec_helper.rb
270
+ - spec/support/factories/commands.rb
271
+ - spec/support/factories/commit.rb
272
+ - spec/support/factories/event_message.rb
273
+ - spec/support/factories/events.rb
274
+ - spec/support/filters.rb
275
+ - spec/support/sample_model/commands.rb
276
+ - spec/support/sample_model/counter.rb
277
+ - spec/support/sample_model/counter2.rb
278
+ - spec/support/stub_retrying_subscription.rb
212
279
  has_rdoc: true
213
280
  homepage: http://github.com/leemhenson/euston-daemons
214
281
  licenses: []
@@ -1,56 +0,0 @@
1
- module Euston
2
- module CommandProcessorDaemon
3
- class CommandHandlerComponent
4
- include Euston::Daemons::ComponentShutdown
5
-
6
- attr_reader :cli_thread
7
-
8
- def initialize daemon
9
- @daemon = daemon
10
- end
11
-
12
- def start
13
- handler_finder = Euston::RabbitMq::HandlerFinder.new [Euston::CommandHandler]
14
- handler_finder.namespaces << Euston::RabbitMq::CommandHandlers
15
- handler_finder.namespaces.push(*COMMAND_HANDLER_NAMESPACES) if Object.const_defined? 'COMMAND_HANDLER_NAMESPACES'
16
- handlers = handler_finder.find
17
-
18
- binder = Euston::RabbitMq::CommandHandlerBinder.new handlers
19
- binder.ensure_bindings_exist
20
-
21
- @cli_thread = Thread.new(@daemon, handlers) do |daemon, handlers|
22
- channel_thread = Euston::Daemons::ChannelThread.new
23
- channel_thread.daemon = daemon
24
-
25
- channel_thread.run do |channel|
26
- message_received = Proc.new do |message|
27
- command_headers = CommandHeaders.from_hash(message[:headers]).freeze
28
- command_body = message[:body].freeze
29
-
30
- handler_type = command_headers.type.to_s.camelize.to_sym
31
- handler_method_name = "__version__#{command_headers.version}"
32
-
33
- handlers.find_all { |reference| reference.name == handler_type }.each do |reference|
34
- EUSTON_LOG.debug "Delivering message to: #{reference.name}.#{handler_method_name}"
35
-
36
- reference.handler.new.send handler_method_name, command_headers, command_body
37
- end
38
- end
39
-
40
- Euston::RabbitMq::RetriableSubscription.new(channel, :command_handlers)
41
- .when(:message_received => message_received)
42
- .attach_queue_hook_listeners
43
- end
44
- end
45
- end
46
-
47
- def thread_state
48
- @cli_thread.status
49
- end
50
-
51
- def stop
52
- @cli_thread[:stop] = true
53
- end
54
- end
55
- end
56
- end
@@ -1,22 +0,0 @@
1
- module Euston
2
- module CommandProcessorDaemon
3
- module Settings
4
- def self.configure(cfg=nil)
5
- @config ||= {}
6
- @config.merge!(cfg) if cfg && cfg.is_a?(Hash)
7
- end
8
-
9
- def self.client_instances
10
- @config[:client_instances] || 1
11
- end
12
-
13
- def self.mongo_db_name
14
- @config[:mongo_db_name]
15
- end
16
-
17
- def self.debug
18
- @config[:debug]
19
- end
20
- end
21
- end
22
- end
@@ -1,58 +0,0 @@
1
- module Euston
2
- module EventProcessorDaemon
3
- class EventHandlerComponent
4
- include Euston::Daemons::ComponentShutdown
5
-
6
- attr_reader :cli_threads
7
-
8
- def initialize daemon
9
- @daemon = daemon
10
- @cli_threads = {}
11
- end
12
-
13
- def start
14
- handler_finder = Euston::RabbitMq::HandlerFinder.new [Euston::EventHandler]
15
- handler_finder.namespaces << Euston::RabbitMq::EventHandlers
16
- handler_finder.namespaces.push(*EVENT_HANDLER_NAMESPACES) if Object.const_defined? 'EVENT_HANDLER_NAMESPACES'
17
- handlers = handler_finder.find
18
-
19
- binder = Euston::RabbitMq::EventHandlerBinder.new handlers
20
- binder.ensure_bindings_exist
21
-
22
- handlers.each do |reference|
23
- @cli_threads[reference.handler.to_s] = Thread.new(@daemon, reference) do |daemon, reference|
24
- channel_thread = Euston::Daemons::ChannelThread.new
25
- channel_thread.daemon = daemon
26
-
27
- channel_thread.run do |channel|
28
- message_received = Proc.new do |message|
29
- event_headers = EventHeaders.from_hash message[:headers]
30
- event_body = message[:body]
31
-
32
- handler_method_name = "__event_handler__#{event_headers.type}__#{event_headers.version}"
33
-
34
- EUSTON_LOG.debug "Delivering message to: #{reference.handler}.#{handler_method_name}"
35
-
36
- reference.handler.new.send handler_method_name, event_headers.freeze, event_body.freeze
37
- end
38
-
39
- Euston::RabbitMq::RetriableSubscription.new(channel, reference.name.to_s.underscore)
40
- .when(:message_received => message_received)
41
- .attach_queue_hook_listeners
42
- end
43
- end
44
- end
45
- end
46
-
47
- def thread_state
48
- out = {}
49
- @cli_threads.each { |k, th| out[k] = th.status }
50
- out.inspect
51
- end
52
-
53
- def stop
54
- @cli_threads.values.each { |th| th[:stop] = true }
55
- end
56
- end
57
- end
58
- end
@@ -1,26 +0,0 @@
1
- module Euston
2
- module EventProcessorDaemon
3
- module Settings
4
- def self.configure(cfg=nil)
5
- @config ||= {}
6
- @config.merge!(cfg) if cfg && cfg.is_a?(Hash)
7
- end
8
-
9
- def self.server_instances
10
- @config[:server_instances] || 2
11
- end
12
-
13
- def self.bus_port_base
14
- (@config[:zmq_base_port] || 8200).to_i
15
- end
16
-
17
- def self.mongo_db_name
18
- @config[:mongo_db_name]
19
- end
20
-
21
- def self.debug
22
- @config[:debug]
23
- end
24
- end
25
- end
26
- end
@@ -1,33 +0,0 @@
1
- module Euston
2
- module Daemons
3
- class BasicComponent
4
- include Euston::Daemons::ComponentShutdown
5
-
6
- attr_reader :client, :cli_thread
7
-
8
- def initialize(hosted_object)
9
- @client = hosted_object
10
- end
11
-
12
- def start
13
- @cli_thread = Thread.new do
14
- begin
15
- @client.start
16
- rescue => e
17
- Thread.current[:exception] = e
18
- end
19
- check_exception_and_shutdown
20
- end
21
- end
22
-
23
- def thread_state
24
- @cli_thread.status
25
- end
26
-
27
- def stop
28
- @cli_thread[:stop] = true
29
- @client.disconnect if @client.respond_to?(:disconnect)
30
- end
31
- end
32
- end
33
- end
@@ -1,22 +0,0 @@
1
- module Euston
2
- module Daemons
3
- class ChannelThread
4
- include ComponentShutdown
5
-
6
- def run &blk
7
- begin
8
- channel = AMQP::Channel.new
9
- channel.prefetch(1)
10
-
11
- yield channel
12
- rescue => e
13
- Thread.current[:exception] = e
14
- ensure
15
- channel.disconnect unless channel.nil?
16
- end
17
-
18
- check_exception_and_shutdown
19
- end
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- module Euston
2
- module Daemons
3
- module ComponentShutdown
4
- attr_writer :daemon
5
-
6
- def check_exception_and_shutdown(errors=[])
7
- if errors.compact.empty?
8
- errors << Thread.current[:exception]
9
- return if errors.compact.empty?
10
- end
11
- errors.compact.each do |e|
12
- if e.respond_to?(:cause) #its a serious (Java?) exception
13
- Thread.current[:stop] = true
14
- @daemon.irrecoverable_signal_from_component! e
15
- else
16
- Safely.report! e
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,27 +0,0 @@
1
- module Euston
2
- module Daemon
3
- def errors
4
- @errors ||= Queue.new
5
- end
6
-
7
- def irrecoverable_signal_from_component!(e)
8
- self.errors.push e
9
- @queue.push "SHUTDOWN"
10
- end
11
-
12
- def report_shutdown_reasons
13
- sleep(0.25)
14
- reports = []
15
- until self.errors.empty? do
16
- e = self.errors.pop(true) rescue nil
17
- next if e.nil?
18
- case e
19
- when NativeException
20
- Safely.report!(e.cause)
21
- else
22
- Safely.report!(e)
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,56 +0,0 @@
1
- # module Euston
2
- # module Daemons
3
- # class HandlerBindingsComponent
4
- # include Euston::Daemons::ComponentShutdown
5
-
6
- # attr_reader :cli_threads
7
-
8
- # def initialize
9
- # @cli_threads = {}
10
- # end
11
-
12
- # def start
13
- # inspector = Euston::RabbitMq::HandlerInspector.new
14
- # inspector.namespaces.push *handler_namespaces
15
- # inspector.when(:handler_found => bind_thread_to_handler).start
16
- # end
17
-
18
- # def thread_state
19
- # states = {}
20
- # @cli_threads.each { |key, thread| out[key] = thread.status }
21
- # states.inspect
22
- # end
23
-
24
- # def stop
25
- # @cli_threads.values.each { |th| th[:stop] = true }
26
- # end
27
-
28
- # private
29
-
30
- # def bind_thread_to_handler namespace, handler
31
- # @cli_threads["#{namespace}.#{handler}"] = Thread.new(namespace, handler) do |namespace, handler|
32
- # begin
33
- # channel = AMQP::Channel.new
34
- # channel.prefetch(1)
35
-
36
- # EUSTON_LOG.debug "Listening on: #{namespace}.#{handler}"
37
-
38
- # binding = HandlerBinding.new channel, namespace, handler, routing_key_prefix
39
- # binding.bind
40
- # binding.listen
41
- # rescue => e
42
- # Thread.current[:exception] = e
43
- # ensure
44
- # channel.disconnect
45
- # end
46
-
47
- # check_exception_and_shutdown
48
- # end
49
- # end
50
-
51
- # def handler_namespaces
52
- # # abstract
53
- # end
54
- # end
55
- # end
56
- # end