mumukit-nuntius 3.1.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mumukit/nuntius/event_consumer.rb +39 -27
- data/lib/mumukit/nuntius/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fc04550bade975d33455bb1dd1d1cd0343ed762
|
4
|
+
data.tar.gz: c250ec41bad406608c596bf10f7e5e68e46f3afc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bdbe69d8100e63d9d6e62fd5c0df77e0b2c15f5d092de708336584960dd73f942801f1cf77f5db9ee58ffba1b9ec291e9b94cc542310daec766230b5794f28ce
|
7
|
+
data.tar.gz: 78e9d2ed8547cb865f580878376b978a6a92e97881c270f09842ca6c0eac0d01d001e0d247b287c91ce5115be5732719ba94e5b21c8b989d1b4b5bfdbc295301
|
@@ -1,46 +1,58 @@
|
|
1
1
|
module Mumukit::Nuntius::EventConsumer
|
2
|
-
|
3
|
-
def
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
class Builder
|
3
|
+
def initialize
|
4
|
+
@handlers = {}
|
5
|
+
end
|
6
|
+
|
7
|
+
def event(key, &block)
|
8
|
+
@handlers[key] = block
|
9
|
+
end
|
10
|
+
|
11
|
+
def build
|
12
|
+
@handlers
|
8
13
|
end
|
9
14
|
end
|
10
15
|
|
11
16
|
class << self
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
17
|
+
@@handlers = {}
|
18
|
+
|
19
|
+
def handle(&block)
|
20
|
+
register_handlers! Builder.new.tap { |it| it.instance_eval(&block) }.build
|
16
21
|
end
|
17
22
|
|
18
|
-
def
|
19
|
-
|
23
|
+
def register_handlers!(handlers)
|
24
|
+
@@handlers = handlers
|
25
|
+
end
|
20
26
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
rescue => e
|
27
|
-
log_exception(name, properties, e)
|
27
|
+
def start!
|
28
|
+
queue_name = "#{Mumukit::Nuntius.config.app_name}-events"
|
29
|
+
Mumukit::Nuntius::Consumer.start queue_name, 'events' do |_delivery_info, properties, body|
|
30
|
+
handle_event!(properties, body)
|
31
|
+
end
|
28
32
|
end
|
29
33
|
|
30
|
-
def
|
31
|
-
|
34
|
+
def handles?(event)
|
35
|
+
@@handlers[event].present?
|
32
36
|
end
|
33
37
|
|
34
|
-
def
|
35
|
-
|
38
|
+
def handle_event!(properties, body)
|
39
|
+
return if body[:data][:sender] == Mumukit::Nuntius.config.app_name
|
40
|
+
event = properties[:type]
|
41
|
+
if handles? event
|
42
|
+
@@handlers[event].call body[:data].except(:sender)
|
43
|
+
else
|
44
|
+
log_unknown_event event
|
45
|
+
end
|
46
|
+
rescue => e
|
47
|
+
log_exception(event, e)
|
36
48
|
end
|
37
49
|
|
38
|
-
def log_unknown_event(
|
39
|
-
Mumukit::Nuntius::Logger.info "#{
|
50
|
+
def log_unknown_event(event)
|
51
|
+
Mumukit::Nuntius::Logger.info "Unhandled #{event} does not exists."
|
40
52
|
end
|
41
53
|
|
42
|
-
def log_exception(
|
43
|
-
Mumukit::Nuntius::Logger.error "Failed to proccess #{
|
54
|
+
def log_exception(event, e)
|
55
|
+
Mumukit::Nuntius::Logger.error "Failed to proccess #{event}, error was: #{e}"
|
44
56
|
end
|
45
57
|
end
|
46
58
|
end
|