mumukit-nuntius 0.3.6 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YTFmZGNmN2RmOGY2MDNhZjA5NDhmMzAxZmFkNDFiNTkxZjI0NzU0Yg==
5
- data.tar.gz: !binary |-
6
- N2Q3ZWNkNGEyMWNkMjQ5ZTdhMjYwMzg5NTlmYzFlZGFjN2Y1OTlmYQ==
2
+ SHA1:
3
+ metadata.gz: 838018829cf053eaf3a82e36102c25f7b296e237
4
+ data.tar.gz: 93ad5ff0268c014f489af2d1dace2c0f6ab90127
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZTY3NjVlOGEyZTQ3MDg5NTY0MDQ5NGU4MzQwODg1MTZiZTliNzNiOWQ0MTgw
10
- NzM2Y2M5ZDM4NmYzZmFkMWE5ZTllZmU1NTM2YTNiNDQzOTA1MWQyMTg4ZDc3
11
- MTI3Y2Q2MmYxODk4Njc2NWVhNTI1ZTYwOTY3MTdmOGYwYWRlNDk=
12
- data.tar.gz: !binary |-
13
- ZGM3NzA3YjdlNmU2MzMxYzViZDhlNjE0NzIxNjNhMmJhMWZmZTA4MzBjYWVl
14
- YjNjOWNkMTU0Zjc2ZWE5NTgwYWE5ZTJjYjZjMTJhYTkyZjI1YTkyYjk2YjAy
15
- MDY2ZDFmYTQ1YTJjZjQ0ZTU3ZjlhNzQwZTY4ODNkMzFhN2MwOWU=
6
+ metadata.gz: 848046ff7711c4be2140bcaf9b3ffd233123350adcb62ff77681d44f533185fb58fa2a864d414ac20702bd32e3cf1af62798951112f5d48529f5c5678e9599ab
7
+ data.tar.gz: 7f2bb1a030d08dacf3e2efd82a8cbd1920116e218aad748fdd2cd9b09cf687669daacf3d497729d0f87bff040cddb8cdf299faff72b9b8aad8ad03cba889741e
@@ -15,6 +15,6 @@ require 'mumukit/nuntius/connection'
15
15
  require 'mumukit/nuntius/channel'
16
16
  require 'mumukit/nuntius/publisher'
17
17
  require 'mumukit/nuntius/consumer'
18
- require 'mumukit/nuntius/command_consumer'
19
- require 'mumukit/nuntius/command_publisher'
18
+ require 'mumukit/nuntius/event_consumer'
19
+ require 'mumukit/nuntius/event_publisher'
20
20
 
@@ -7,11 +7,11 @@ class Mumukit::Nuntius::Connection
7
7
  with_indifferent_access[ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development']
8
8
  end
9
9
 
10
- def start(queue_name)
10
+ def start(exchange_name)
11
11
  connection = Bunny.new(host: config[:host], user: config[:user], password: config[:password])
12
12
  channel = connection.start.create_channel
13
- queue = channel.queue(queue_name, durable: true)
14
- [connection, channel, queue]
13
+ exchange = channel.fanout(exchange_name)
14
+ [connection, channel, exchange]
15
15
  end
16
16
  end
17
17
  end
@@ -2,10 +2,12 @@ module Mumukit::Nuntius::Consumer
2
2
 
3
3
  class << self
4
4
 
5
- def start(queue_name, &block)
5
+ def start(queue_name, exchange_name, &block)
6
6
  Mumukit::Nuntius::Logger.info "Attaching to queue #{queue_name}"
7
7
 
8
- connection, channel, queue = Mumukit::Nuntius::Connection.start(queue_name)
8
+ connection, channel, exchange = Mumukit::Nuntius::Connection.start(exchange_name)
9
+ queue = channel.queue(queue_name, durable: true)
10
+ queue.bind(exchange)
9
11
  channel.prefetch(1)
10
12
 
11
13
  begin
@@ -29,8 +31,7 @@ module Mumukit::Nuntius::Consumer
29
31
  channel.ack(delivery_info.delivery_tag)
30
32
  rescue => e
31
33
  Mumukit::Nuntius::Logger.warn "Failed to read body: #{e.message} \n #{e.backtrace}"
32
- channel.persistent_publish(body, delivery_info.routing_key)
33
- channel.nack(delivery_info.delivery_tag, requeue: true)
34
+ channel.nack(delivery_info.delivery_tag, false, true)
34
35
  end
35
36
  end
36
37
  end
@@ -0,0 +1,35 @@
1
+ module Mumukit::Nuntius::EventConsumer
2
+
3
+ class << self
4
+
5
+ def start(name)
6
+ Mumukit::Nuntius::Consumer.start "#{name}-events", 'events' do |_delivery_info, _properties, body|
7
+ begin
8
+ choose_event(name, body).execute!(body['data'])
9
+ rescue NoMethodError => e
10
+ log_exception(name, body, e)
11
+ rescue NameError => e
12
+ log_unkown_event(name, body)
13
+ rescue => e
14
+ log_exception(name, body, e)
15
+ end
16
+ end
17
+ end
18
+
19
+ def choose_event(name, body)
20
+ event_name(name, body).constantize
21
+ end
22
+
23
+ def event_name(name, body)
24
+ "#{name.capitalize}::Event::#{body['type']}"
25
+ end
26
+
27
+ def log_unkown_event(name, body)
28
+ Mumukit::Nuntius::Logger.error "#{event_name(name, body)} does not exists."
29
+ end
30
+
31
+ def log_exception(name, body, e)
32
+ Mumukit::Nuntius::Logger.error "Failed to proccess #{event_name(name, body)}, error was: #{e}"
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,10 @@
1
+ module Mumukit::Nuntius::EventPublisher
2
+
3
+ class << self
4
+
5
+ def publish(event, payload)
6
+ Mumukit::Nuntius::Publisher.publish "events", data: payload, type: event
7
+ end
8
+
9
+ end
10
+ end
@@ -2,9 +2,9 @@ module Mumukit::Nuntius::Publisher
2
2
 
3
3
  class << self
4
4
 
5
- def publish(queue_name, data)
6
- connection, channel, queue = Mumukit::Nuntius::Connection.start(queue_name)
7
- channel.persistent_publish(data.to_json, queue_name)
5
+ def publish(exchange_name, data)
6
+ connection, channel, exchange = Mumukit::Nuntius::Connection.start(exchange_name)
7
+ exchange.publish(data.to_json, persistent: true)
8
8
  connection.close
9
9
  end
10
10
 
@@ -1,5 +1,5 @@
1
1
  module Mumukit
2
2
  module Nuntius
3
- VERSION = '0.3.6'
3
+ VERSION = '1.0.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumukit-nuntius
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agustin Pina
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-30 00:00:00.000000000 Z
11
+ date: 2016-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '2'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: activesupport
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '4.1'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '4.1'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bunny
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '2.3'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '2.3'
83
83
  description:
@@ -90,10 +90,10 @@ files:
90
90
  - config/rabbit.yml
91
91
  - lib/mumukit/nuntius.rb
92
92
  - lib/mumukit/nuntius/channel.rb
93
- - lib/mumukit/nuntius/command_consumer.rb
94
- - lib/mumukit/nuntius/command_publisher.rb
95
93
  - lib/mumukit/nuntius/connection.rb
96
94
  - lib/mumukit/nuntius/consumer.rb
95
+ - lib/mumukit/nuntius/event_consumer.rb
96
+ - lib/mumukit/nuntius/event_publisher.rb
97
97
  - lib/mumukit/nuntius/publisher.rb
98
98
  - lib/mumukit/nuntius/version.rb
99
99
  homepage: http://github.com/mumuki/mumukit-auth
@@ -107,12 +107,12 @@ require_paths:
107
107
  - config
108
108
  required_ruby_version: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - ! '>='
110
+ - - ">="
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ! '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  requirements: []
@@ -1,35 +0,0 @@
1
- module Mumukit::Nuntius::CommandConsumer
2
-
3
- class << self
4
-
5
- def start(name)
6
- Mumukit::Nuntius::Consumer.start "#{name}-commands" do |_delivery_info, _properties, body|
7
- begin
8
- choose_command(name, body).execute!(body['data'])
9
- rescue NoMethodError => e
10
- log_exception(name, body, e)
11
- rescue NameError => e
12
- log_unkown_command(name, body)
13
- rescue => e
14
- log_exception(name, body, e)
15
- end
16
- end
17
- end
18
-
19
- def choose_command(name, body)
20
- command_name(name, body).constantize
21
- end
22
-
23
- def command_name(name, body)
24
- "#{name.capitalize}::Command::#{body['type']}"
25
- end
26
-
27
- def log_unkown_command(name, body)
28
- Mumukit::Nuntius::Logger.error "#{command_name(name, body)} does not exists."
29
- end
30
-
31
- def log_exception(name, body, e)
32
- Mumukit::Nuntius::Logger.error "Failed to proccess #{command_name(name, body)}, error was: #{e}"
33
- end
34
- end
35
- end
@@ -1,10 +0,0 @@
1
- module Mumukit::Nuntius::CommandPublisher
2
-
3
- class << self
4
-
5
- def publish(destination, command, payload)
6
- Mumukit::Nuntius::Publisher.publish "#{destination}-commands", { data: payload }.merge(type: command)
7
- end
8
-
9
- end
10
- end