eventhub-processor 0.0.7 → 0.1.1
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.
- checksums.yaml +4 -4
- data/lib/eventhub/multi_logger.rb +3 -1
- data/lib/eventhub/processor.rb +48 -12
- data/lib/eventhub/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e4ce69b4a807077b43ff86fa599cf2f16a98edd
|
4
|
+
data.tar.gz: 11494b0b12a740701ee3d9485a62cf86bb998554
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6643282458c6a9fda028a66cdd595cfee83a4b0fd4a37bda1b3efc34a7f645c9bd25b87f2cae6020ea15526f4504c70701fd442d0eac662791c8b072451d59bb
|
7
|
+
data.tar.gz: 4cd12c7edcadf630f7445d6be571fe54e9779a6a09891a726995586b0e1cdc0b0f344222fced136a3d3e85b92dc2c397ef04c6e3e43dc1e968c0459ca9f5d13d
|
data/lib/eventhub/processor.rb
CHANGED
@@ -5,6 +5,10 @@ module EventHub
|
|
5
5
|
|
6
6
|
include Helper
|
7
7
|
|
8
|
+
def version
|
9
|
+
"1.0.0"
|
10
|
+
end
|
11
|
+
|
8
12
|
def initialize(name=nil)
|
9
13
|
@name = name || class_to_array(self.class)[1..-1].join(".")
|
10
14
|
@folder = Dir.pwd
|
@@ -14,6 +18,9 @@ module EventHub
|
|
14
18
|
@messages_successful = 0
|
15
19
|
@messages_unsuccessful = 0
|
16
20
|
|
21
|
+
|
22
|
+
@channel_receiver = nil
|
23
|
+
@channel_sender = nil
|
17
24
|
@restart = true
|
18
25
|
end
|
19
26
|
|
@@ -66,8 +73,6 @@ module EventHub
|
|
66
73
|
|
67
74
|
EventHub.logger.info("Processor [#{@name}] base folder [#{@folder}]")
|
68
75
|
|
69
|
-
channel = nil
|
70
|
-
|
71
76
|
while @restart
|
72
77
|
|
73
78
|
begin
|
@@ -82,10 +87,10 @@ module EventHub
|
|
82
87
|
end
|
83
88
|
|
84
89
|
# create channel
|
85
|
-
|
86
|
-
|
90
|
+
@channel_receiver = AMQP::Channel.new(@connection, prefetch: 1)
|
91
|
+
|
87
92
|
# connect to queue
|
88
|
-
@queue =
|
93
|
+
@queue = @channel_receiver.queue(self.listener_queue, durable: true, auto_delete: false)
|
89
94
|
|
90
95
|
# subscribe to queue
|
91
96
|
@queue.subscribe(:ack => true) do |metadata, payload|
|
@@ -110,11 +115,11 @@ module EventHub
|
|
110
115
|
messages_to_send.each do |message|
|
111
116
|
send_message(message)
|
112
117
|
end
|
113
|
-
|
118
|
+
@channel_receiver.acknowledge(metadata.delivery_tag)
|
114
119
|
@messages_successful += 1
|
115
120
|
|
116
121
|
rescue => e
|
117
|
-
|
122
|
+
@channel_receiver.reject(metadata.delivery_tag,false)
|
118
123
|
@messages_unsuccessful += 1
|
119
124
|
EventHub.logger.error("Unexpected exception in handle_message method: #{e}. Message dead lettered.")
|
120
125
|
EventHub.logger.save_detailed_error(e)
|
@@ -127,6 +132,9 @@ module EventHub
|
|
127
132
|
Signal.trap("TERM") {stop_processor}
|
128
133
|
Signal.trap("INT") {stop_processor}
|
129
134
|
|
135
|
+
# post_start is a custom post start routing to be overwritten
|
136
|
+
post_start
|
137
|
+
|
130
138
|
# Various timers
|
131
139
|
EventMachine.add_timer(@watchdog_cycle_in_s) { watchdog }
|
132
140
|
|
@@ -144,6 +152,9 @@ module EventHub
|
|
144
152
|
|
145
153
|
end # while
|
146
154
|
|
155
|
+
# post_start is a custom post start routing to be overwritten
|
156
|
+
post_stop
|
157
|
+
|
147
158
|
EventHub.logger.info("Processor [#{@name}] has been stopped")
|
148
159
|
ensure
|
149
160
|
# remove pid file
|
@@ -192,7 +203,8 @@ module EventHub
|
|
192
203
|
|
193
204
|
now = Time.now
|
194
205
|
message.body = {
|
195
|
-
|
206
|
+
version: self.version,
|
207
|
+
heartbeat: {
|
196
208
|
started: now_stamp(@started),
|
197
209
|
stamp_last_beat: now_stamp(now),
|
198
210
|
uptime: duration(now-@started),
|
@@ -212,15 +224,25 @@ module EventHub
|
|
212
224
|
send_message(message)
|
213
225
|
|
214
226
|
EventMachine.add_timer(self.heartbeat_cycle_in_s) { heartbeat }
|
227
|
+
|
215
228
|
end
|
216
229
|
|
217
230
|
# send message
|
218
231
|
def send_message(message,exchange_name=EH_X_INBOUND)
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
232
|
+
|
233
|
+
if @channel_sender.nil? || !@channel_sender.open?
|
234
|
+
@channel_sender = AMQP::Channel.new(@connection, prefetch: 1)
|
235
|
+
|
236
|
+
# use publisher confirm
|
237
|
+
@channel_sender.confirm_select
|
238
|
+
|
239
|
+
# @channel.on_error { |ch, channel_close| EventHub.logger.error "Oops! a channel-level exception: #{channel_close.reply_text}" }
|
240
|
+
# @channel.on_ack { |basic_ack| EventHub.logger.info "Received basic_ack: multiple = #{basic_ack.multiple}, delivery_tag = #{basic_ack.delivery_tag}" }
|
223
241
|
end
|
242
|
+
|
243
|
+
exchange = @channel_sender.direct(exchange_name, :durable => true, :auto_delete => false)
|
244
|
+
exchange.publish(message.to_json, :persistent => true)
|
245
|
+
|
224
246
|
rescue => e
|
225
247
|
EventHub.logger.error("Unexpected exception while sending message to [#{exchange_name}]: #{e}")
|
226
248
|
end
|
@@ -238,6 +260,13 @@ module EventHub
|
|
238
260
|
def stop_processor(restart=false)
|
239
261
|
@restart = restart
|
240
262
|
|
263
|
+
# close channels
|
264
|
+
[@channel_receiver,@channel_sender].each do |channel|
|
265
|
+
if channel
|
266
|
+
channel.close if channel.open?
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
241
270
|
# stop connection and event loop
|
242
271
|
if @connection
|
243
272
|
@connection.disconnect if @connection.connected?
|
@@ -255,5 +284,12 @@ module EventHub
|
|
255
284
|
IO.write("#{@folder}/#{@name}.pid",Process.pid.to_s)
|
256
285
|
end
|
257
286
|
|
287
|
+
def post_start
|
288
|
+
# method which can be overwritten to call a code sequence after reactor start
|
289
|
+
end
|
290
|
+
|
291
|
+
def post_stop
|
292
|
+
end
|
293
|
+
|
258
294
|
end
|
259
295
|
end
|
data/lib/eventhub/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eventhub-processor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Steiner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|