eventhub-processor 0.1.4 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 12c253f5e74d502a2c2cb1614c43f06cefcc94ab
4
- data.tar.gz: 6f6f3cbd596fba45d5f8b6894f90666b3cb9a10f
3
+ metadata.gz: 7f30f60657aa0add2c650f979379a322e12e03a0
4
+ data.tar.gz: a1a3c18323cb8c279efcf8d75458d9c0f3e2e9ce
5
5
  SHA512:
6
- metadata.gz: 08cbfac351147006c6da25d2313166ce038bbefe8d995ff9315a201b3d856e26e78909ee81bcd5d9e05334a8e83a279962d7d0718dac4f8655ad3f01080b51fc
7
- data.tar.gz: d189a1178191abccfea76e9ce7cf55f305983286def5f54a16ea2465ea0c3743fd21c0f19e2ac3b862283f976f8689febd061140f21e68c5e2784f61fae97d5e
6
+ metadata.gz: 724596f917212aa8de6ae04c22ddec1801074c43a209a784f7c0417529b17ab14611ea8a6fdabc8047cab6b28b0a57af269e5fc6bd16c8ce3e69442dd95aeca7
7
+ data.tar.gz: 41e41e635ce559e6279db9ab34d2059b3060402caeb39f7bc31dec2438f84762fdf5476eac543e771696e162a15157e2a5d11bde2eb512bd69aa476894bfa128
@@ -2,10 +2,15 @@ module EventHub
2
2
 
3
3
  EH_X_INBOUND = 'event_hub.inbound'
4
4
 
5
- STATUS_INITIAL = 0 # initial status code
6
- STATUS_SUCCESS = 200 # compare with HTTP Status Code: Success
7
- STATUS_RETRIED = 300 # compare with HTTP Status Code: Multiple Choices
8
- STATUS_INVALID = 400 # compare with HTTP Status Code: Bad request
9
- STATUS_UNDELIVERABLE = 500 # comapre with HTTP Status Code: Server Error
10
- STATUS_ERROR = 600 # Business Process Error
5
+ STATUS_INITIAL = 0 # To be set when dispatcher needs to dispatch to first process step.
6
+ STATUS_SUCCESS = 200 # To be set to indicate successful processed message. Dispatcher will routes message to the next step.
7
+ STATUS_RETRY = 300 # To be set to trigger retry cycle controlled by the dispatcher
8
+ STATUS_RETRY_PENDING = 301 # Set and used by the dispatcher only.
9
+ # Set before putting the message into a retry queue.
10
+ # Once message has been retried it will sent do the same step with status.code = STATUS_SUCCESS
11
+ STATUS_INVALID = 400 # To be set to indicate invalid message (not json, invalid Event Hub Message).
12
+ # Dispatcher will publish message to the invalid queue.
13
+ STATUS_DEADLETTER = 500 # To be set by dispatcher, processor or channel adapters to indicate
14
+ # that message needs to be dead-lettered. Rejected messages could miss the
15
+ # status.code = STATUS_DEADLETTER due to the RabbitMQ deadletter exchange mechanism.
11
16
  end
@@ -86,8 +86,8 @@ module EventHub
86
86
  self.status_code == STATUS_INITIAL
87
87
  end
88
88
 
89
- def retried?
90
- self.status_code == STATUS_RETRIED
89
+ def retry_pending?
90
+ self.status_code == STATUS_RETRY_PENDING
91
91
  end
92
92
 
93
93
  def to_json
@@ -13,11 +13,13 @@ module EventHub
13
13
  @name = name || class_to_array(self.class)[1..-1].join(".")
14
14
  @folder = Dir.pwd
15
15
 
16
+ # Variables used for heartbeat statistics
16
17
  @started = Time.now
17
-
18
- @messages_successful = 0
19
- @messages_unsuccessful = 0
20
-
18
+ @messages_successful = 0
19
+ @messages_unsuccessful = 0
20
+ @messages_average_size = 0
21
+ @messages_average_process_time = 0
22
+ @first_message = true
21
23
 
22
24
  @channel_receiver = nil
23
25
  @channel_sender = nil
@@ -94,9 +96,8 @@ module EventHub
94
96
 
95
97
  # subscribe to queue
96
98
  @queue.subscribe(:ack => true) do |metadata, payload|
97
-
98
-
99
99
  begin
100
+ start_stamp = Time.now
100
101
  messages_to_send = []
101
102
 
102
103
  # try to convert to Evenhub message
@@ -116,7 +117,17 @@ module EventHub
116
117
  send_message(message)
117
118
  end
118
119
  @channel_receiver.acknowledge(metadata.delivery_tag)
120
+
121
+ # collect statistics for the heartbeat
119
122
  @messages_successful += 1
123
+ if @first_message
124
+ @messages_average_process_time = Time.now - start_stamp
125
+ @messages_average_size = payload.size
126
+ @first_message = false
127
+ else
128
+ @messages_average_process_time = (@messages_average_process_time + (Time.now - start_stamp))/2.0
129
+ @messages_average_size = (@messages_average_size + payload.size) / 2.0
130
+ end
120
131
 
121
132
  rescue => e
122
133
  @channel_receiver.reject(metadata.delivery_tag,false)
@@ -215,7 +226,9 @@ module EventHub
215
226
  messages: {
216
227
  total: @messages_successful+@messages_unsuccessful,
217
228
  successful: @messages_successful,
218
- unsuccessful: @messages_unsuccessful
229
+ unsuccessful: @messages_unsuccessful,
230
+ average_size: @messages_average_size,
231
+ average_process_time: @messages_average_process_time
219
232
  }
220
233
  }
221
234
  }
@@ -1,3 +1,3 @@
1
1
  module EventHub
2
- VERSION = "0.1.4"
2
+ VERSION = "0.2.0"
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.1.4
4
+ version: 0.2.0
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-05-15 00:00:00.000000000 Z
11
+ date: 2014-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler