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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d6896414dd331b83418d8bbf1e7ed6f6efc78f35
4
- data.tar.gz: c7b8614fc58ba0cdef80a3532d94a645564d08ee
3
+ metadata.gz: 8e4ce69b4a807077b43ff86fa599cf2f16a98edd
4
+ data.tar.gz: 11494b0b12a740701ee3d9485a62cf86bb998554
5
5
  SHA512:
6
- metadata.gz: 46bc0b39fb711bab9835d507bd6bb1410a154d262c0a25fc9239eda0f7bdf79e70480adba332b5e6f4201b9e31ac293ac7861525ea4689807dc8b991203d3916
7
- data.tar.gz: b67fe54f620f45b063721dd6510258b520ea5ec37c7edc83f8e4bbf2ed343588c864726a0f3bb2f6052b3b3a936840b4fb377856a1ae7fa31d4e3bd9ec480f26
6
+ metadata.gz: 6643282458c6a9fda028a66cdd595cfee83a4b0fd4a37bda1b3efc34a7f645c9bd25b87f2cae6020ea15526f4504c70701fd442d0eac662791c8b072451d59bb
7
+ data.tar.gz: 4cd12c7edcadf630f7445d6be571fe54e9779a6a09891a726995586b0e1cdc0b0f344222fced136a3d3e85b92dc2c397ef04c6e3e43dc1e968c0459ca9f5d13d
@@ -19,8 +19,10 @@ module EventHub
19
19
  attr_accessor :folder, :devices
20
20
 
21
21
  def initialize(folder=nil)
22
- @folder = folder || Dir.pwd
22
+ @folder = folder || (Dir.pwd + '/log')
23
23
  @devices = []
24
+
25
+ FileUtils.makedirs(@folder)
24
26
  end
25
27
 
26
28
  def add_device(device)
@@ -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
- channel = AMQP::Channel.new(@connection)
86
-
90
+ @channel_receiver = AMQP::Channel.new(@connection, prefetch: 1)
91
+
87
92
  # connect to queue
88
- @queue = channel.queue(self.listener_queue, durable: true, auto_delete: false)
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
- channel.acknowledge(metadata.delivery_tag)
118
+ @channel_receiver.acknowledge(metadata.delivery_tag)
114
119
  @messages_successful += 1
115
120
 
116
121
  rescue => e
117
- channel.reject(metadata.delivery_tag,false)
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
- heartbeat: {
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
- AMQP::Channel.new(@connection) do |channel|
220
- channel.direct(exchange_name, :durable => true, :auto_delete => false) do |exchange, declare_ok|
221
- exchange.publish(message.to_json, :persistent => true)
222
- end
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
@@ -1,3 +1,3 @@
1
1
  module EventHub
2
- VERSION = "0.0.7"
2
+ VERSION = "0.1.1"
3
3
  end
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.0.7
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-13 00:00:00.000000000 Z
11
+ date: 2014-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler