gorg_service 5.1.0 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c1a373eae1c1f417da46ab05ed254a6282f8db2c
4
- data.tar.gz: b67c38dcea30bac3b29d3857db22794f190f7b00
3
+ metadata.gz: 2085fe592d8c8996fba362f5ab27ed073fc286d7
4
+ data.tar.gz: a7b351d69fbddb9bfea3d4ec5e680eb938bdaeea
5
5
  SHA512:
6
- metadata.gz: ac47bf636d8e2cabf1d8dfcdff4344460df2f9e6b8f533dff63bd122b91ac4d87d822dbdcd8e74cb29889352703481fcc4a1f6e20602af3b7ef6563ef4128e17
7
- data.tar.gz: 097c3a1bebe68f1ddf315e09b1461a8d2fa677e4b09936146a4413d25ae8e893ffa5a627ac2f84daef00d02c74fd1eef1efda48d35677116be392b3d333278f6
6
+ metadata.gz: ae04c871818975d33b1eff5391ce1b677c71b04d2977dbaa4bb4b31fda8d9d53da4e4c39dbfd560f406cecfe48bc62d7700ca2df91627639ff4b09d4db10778a
7
+ data.tar.gz: f97f7c4cb4d13b0134044eb64ee7f1134e2a0f711b034a643ba7b83b8ec43966d8ff2e9d46f32f7b5ed9885812ba60c67a76e1edd763022b15c4073c52f538f3
data/lib/gorg_service.rb CHANGED
@@ -12,7 +12,7 @@ class GorgService
12
12
 
13
13
  #Connection shared across Consumers and Producers (thread safe)
14
14
  def connection
15
- @bunny_session||=Bunny.new(
15
+ @bunny_session||=GorgService.configuration.rabbitmq_client_class.new(
16
16
  :hostname => GorgService.configuration.rabbitmq_host,
17
17
  :port => GorgService.configuration.rabbitmq_port,
18
18
  :user => GorgService.configuration.rabbitmq_user,
@@ -17,7 +17,8 @@ class GorgService
17
17
  # Hold configuration of GorgService in instance variables
18
18
  class Configuration
19
19
 
20
- attr_accessor :application_name,
20
+ attr_accessor :rabbitmq_client_class,
21
+ :application_name,
21
22
  :application_id,
22
23
  :rabbitmq_host,
23
24
  :rabbitmq_port,
@@ -34,6 +35,7 @@ class GorgService
34
35
 
35
36
 
36
37
  def initialize
38
+ @rabbitmq_client_class = Bunny
37
39
  @logger = Logger.new(STDOUT)
38
40
  @application_name = "GorgService"
39
41
  @application_id = "gs"
@@ -57,6 +57,10 @@ class GorgService
57
57
  MessageRouter.register_route(routing_key, self)
58
58
  end
59
59
 
60
+ def reset_listen_to!
61
+ MessageRouter.delete_routes_of(self)
62
+ end
63
+
60
64
  end
61
65
  end
62
66
  end
@@ -22,6 +22,10 @@ class GorgService
22
22
  routes[routing_key]=message_handler
23
23
  end
24
24
 
25
+ def delete_routes_of(message_handler)
26
+ routes.reject!{|_k,v|v==message_handler}
27
+ end
28
+
25
29
  def listened_keys
26
30
  routes.keys
27
31
  end
@@ -144,7 +144,7 @@ class GorgService
144
144
  routing_key: delivery_info[:routing_key],
145
145
  id: properties[:message_id],
146
146
  reply_to: properties[:reply_to],
147
- correlation_id: properties[:correlatio_to],
147
+ correlation_id: properties[:correlation_id],
148
148
  sender_id: properties[:app_id],
149
149
  content_type: properties[:content_type],
150
150
  content_encoding: properties[:content_encoding],
@@ -0,0 +1,72 @@
1
+ class BunnyCleaner
2
+
3
+ class Session
4
+ def initialize(*args, &block)
5
+ @target=Bunny::Session.new(*args,&block)
6
+ end
7
+
8
+ def method_missing(method, *args, &block)
9
+ @target.send(method, *args, &block)
10
+ end
11
+
12
+ def self.method_missing(method, *args, &block)
13
+ Bunny::Session.send(method, *args, &block)
14
+ end
15
+
16
+ def create_channel(*args,&block)
17
+ ch=@target.create_channel(*args,&block)
18
+ BunnyCleaner.registered_channels<<ch
19
+ ch
20
+ end
21
+ end
22
+
23
+
24
+ def initialize(*args, &block)
25
+ @target=Session.new(*args, &block)
26
+ end
27
+
28
+ def method_missing(method, *args, &block)
29
+ @target.send(method, *args, &block)
30
+ end
31
+
32
+ def self.method_missing(method, *args, &block)
33
+ Bunny.send(method, *args, &block)
34
+ end
35
+
36
+ class << self
37
+ def registered_channels
38
+ @registered_channels||=[]
39
+ end
40
+
41
+ def cleaning(&block)
42
+ begin
43
+ init_cleaning
44
+ block.call
45
+ ensure
46
+ clean
47
+ end
48
+ end
49
+
50
+
51
+ def clean
52
+ connections=[]
53
+ @registered_channels.each do |ch|
54
+ c=ch.connection
55
+ connections<<c
56
+ c.start unless c.status == :open
57
+
58
+ c.with_channel do |chan|
59
+ ch.queues.keys.each{|q| c.queue_exists?(q)&&chan.queue_delete(q) }
60
+ ch.exchanges.keys.each{|ex| c.exchange_exists?(ex)&&chan.exchange_delete(ex) }
61
+ end
62
+ end
63
+ connections.uniq.each{|c|c.stop}
64
+ end
65
+
66
+ def init_cleaning
67
+ registered_channels.clear
68
+ end
69
+
70
+ end
71
+
72
+ end
@@ -0,0 +1,30 @@
1
+ class LogMessageHandler < GorgService::Consumer::MessageHandler::Base
2
+ def initialize(msg)
3
+ GorgService.logger.debug "Message received in LogMessageHandler"
4
+ self.class.messages<<msg
5
+ end
6
+
7
+ def self.messages
8
+ @@messages||=[]
9
+ end
10
+
11
+ def self.has_received_error?(type)
12
+ messages.any?{|m| m.errors.any?{|x| x.type==type}}
13
+ end
14
+
15
+ def self.has_received_hardfail?
16
+ self.has_received_error?("harderror")
17
+ end
18
+
19
+ def self.has_received_hardfail?
20
+ self.has_received_error?("softerror")
21
+ end
22
+
23
+ def self.has_received_a_message_with_routing_key?(routing_key)
24
+ messages.any?{|m| m.routing_key==routing_key}
25
+ end
26
+
27
+ def self.reset
28
+ @@messages=nil
29
+ end
30
+ end
@@ -2,5 +2,5 @@
2
2
  # encoding: utf-8
3
3
 
4
4
  class GorgService
5
- VERSION = "5.1.0"
5
+ VERSION = "5.2.0"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gorg_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Narbonne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-08 00:00:00.000000000 Z
11
+ date: 2017-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny
@@ -178,6 +178,8 @@ files:
178
178
  - lib/gorg_service/message/json_schema.rb
179
179
  - lib/gorg_service/producer.rb
180
180
  - lib/gorg_service/rabbitmq_env_builder.rb
181
+ - lib/gorg_service/rspec/bunny_cleaner.rb
182
+ - lib/gorg_service/rspec/log_message_handler.rb
181
183
  - lib/gorg_service/version.rb
182
184
  homepage: https://github.com/Zooip/gorg_service
183
185
  licenses: