cf-message-bus 0.0.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.
@@ -8,10 +8,11 @@ module CfMessageBus
8
8
  class MessageBus
9
9
  def initialize(config)
10
10
  @logger = config[:logger]
11
- @internal_bus = MessageBusFactory.message_bus(config[:uri])
11
+
12
+ @internal_bus = MessageBusFactory.message_bus(
13
+ config[:servers] || config[:uris] || config[:uri])
14
+
12
15
  @subscriptions = {}
13
- @internal_bus.on_reconnect { start_internal_bus_recovery }
14
- @recovery_callback = lambda {}
15
16
  end
16
17
 
17
18
  def subscribe(subject, options = {}, &block)
@@ -30,10 +31,6 @@ module CfMessageBus
30
31
  end
31
32
  end
32
33
 
33
- def recover(&block)
34
- @recovery_callback = block
35
- end
36
-
37
34
  def request(subject, data = nil, options = {}, &block)
38
35
  response_timeout = options.delete(:timeout)
39
36
  result_count = options.delete(:result_count)
@@ -50,6 +47,7 @@ module CfMessageBus
50
47
  run_handler(block, {timeout: true}, nil, subject, 'timeout')
51
48
  end
52
49
  end
50
+
53
51
  subscription_id
54
52
  end
55
53
 
@@ -93,19 +91,6 @@ module CfMessageBus
93
91
  end
94
92
  end
95
93
 
96
- def start_internal_bus_recovery
97
- EM.defer do
98
- @logger.info("Reconnected to internal_bus.")
99
-
100
- @recovery_callback.call
101
-
102
- @subscriptions.each do |subject, options|
103
- @logger.info("Resubscribing to #{subject}")
104
- subscribe(subject, options[0], &options[1])
105
- end
106
- end
107
- end
108
-
109
94
  def subscribe_on_reactor(subject, options = {}, &blk)
110
95
  EM.schedule do
111
96
  internal_bus.subscribe(subject, options) do |msg, inbox|
@@ -115,7 +100,7 @@ module CfMessageBus
115
100
  end
116
101
 
117
102
  def process_message(msg, inbox, &block)
118
- payload = JSON.parse(msg, symbolize_keys: true)
103
+ payload = JSON.parse(msg)
119
104
  block.yield(payload, inbox)
120
105
  rescue => e
121
106
  @logger.error "exception parsing json: '#{msg}' '#{e.inspect}'"
@@ -1,10 +1,14 @@
1
1
  module CfMessageBus
2
2
  class MockMessageBus
3
+ attr_reader :published_messages, :published_synchronous_messages
4
+
3
5
  def initialize(config = {})
4
6
  @logger = config[:logger]
5
7
  @subscriptions = Hash.new { |hash, key| hash[key] = [] }
6
8
  @requests = {}
9
+ @synchronous_requests = {}
7
10
  @published_messages = []
11
+ @published_synchronous_messages = []
8
12
  end
9
13
 
10
14
  def subscribe(subject, opts = {}, &blk)
@@ -14,7 +18,7 @@ module CfMessageBus
14
18
 
15
19
  def publish(subject, message = nil, &callback)
16
20
  @subscriptions[subject].each do |subscription|
17
- subscription.call(symbolize_keys(message))
21
+ subscription.call(stringify_keys(message))
18
22
  end
19
23
 
20
24
  @published_messages.push({subject: subject, message: message, callback: callback})
@@ -22,13 +26,15 @@ module CfMessageBus
22
26
  callback.call if callback
23
27
  end
24
28
 
25
- def request(subject, data=nil, options={}, &blk)
29
+ def request(subject, data=nil, _={}, &blk)
26
30
  @requests[subject] = blk
27
31
  publish(subject, data)
28
32
  subject
29
33
  end
30
34
 
31
35
  def synchronous_request(subject, data=nil, options={})
36
+ @published_synchronous_messages.push(subject: subject, data: data, options: options)
37
+ stringify_keys(@synchronous_requests[subject])
32
38
  end
33
39
 
34
40
  def unsubscribe(subscription_id)
@@ -44,19 +50,19 @@ module CfMessageBus
44
50
  true
45
51
  end
46
52
 
53
+ def respond_to_synchronous_request(request_subject, data)
54
+ @synchronous_requests[request_subject] = data
55
+ end
56
+
47
57
  def respond_to_request(request_subject, data)
48
58
  block = @requests.fetch(request_subject) { lambda { |data| nil } }
49
- block.call(symbolize_keys(data))
59
+ block.call(stringify_keys(data))
50
60
  end
51
61
 
52
62
  def do_recovery
53
63
  @recovery.call if @recovery
54
64
  end
55
65
 
56
- def published_messages
57
- @published_messages
58
- end
59
-
60
66
  def clear_published_messages
61
67
  @published_messages.clear
62
68
  end
@@ -66,18 +72,29 @@ module CfMessageBus
66
72
  end
67
73
 
68
74
  def has_published_with_message?(subject, message)
69
- @published_messages.find { |publication| publication[:subject] == subject && publication[:message] == message }
75
+ @published_messages.find do |publication|
76
+ publication[:subject] == subject &&
77
+ publication[:message] == message
78
+ end
79
+ end
80
+
81
+ def has_requested_synchronous_messages?(subject, data=nil, options={})
82
+ @published_synchronous_messages.find do |publication|
83
+ publication[:subject] == subject &&
84
+ publication[:data] == data &&
85
+ publication[:options] == options
86
+ end
70
87
  end
71
88
 
72
89
  private
73
90
 
74
- def symbolize_keys(object)
91
+ def stringify_keys(object)
75
92
  case object
76
93
  when Array
77
- object.map {|k| symbolize_keys(k) }
94
+ object.map {|k| stringify_keys(k) }
78
95
  when Hash
79
96
  object.inject({}) do |memo, (key, value)|
80
- memo[key.to_sym] = symbolize_keys(value)
97
+ memo[key.to_s] = stringify_keys(value)
81
98
  memo
82
99
  end
83
100
  else
@@ -1,3 +1,3 @@
1
1
  module CfMessageBus
2
- VERSION = "0.0.4"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cf-message-bus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-22 00:00:00.000000000 Z
12
+ date: 2013-11-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -64,17 +64,23 @@ dependencies:
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
- - - '='
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: 0.5.0.beta.12
70
+ - - <
68
71
  - !ruby/object:Gem::Version
69
- version: 0.4.26
72
+ version: '0.6'
70
73
  type: :runtime
71
74
  prerelease: false
72
75
  version_requirements: !ruby/object:Gem::Requirement
73
76
  none: false
74
77
  requirements:
75
- - - '='
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: 0.5.0.beta.12
81
+ - - <
76
82
  - !ruby/object:Gem::Version
77
- version: 0.4.26
83
+ version: '0.6'
78
84
  - !ruby/object:Gem::Dependency
79
85
  name: vcap-concurrency
80
86
  requirement: !ruby/object:Gem::Requirement