mimi-messaging 0.1.6 → 0.1.7
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 +5 -5
- data/lib/mimi/messaging.rb +3 -0
- data/lib/mimi/messaging/message.rb +11 -3
- data/lib/mimi/messaging/notification.rb +5 -1
- data/lib/mimi/messaging/request_processor.rb +13 -0
- data/lib/mimi/messaging/version.rb +1 -1
- data/lib/tasks/console_helpers.rb +77 -8
- data/mimi-messaging.gemspec +4 -4
- metadata +25 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cfa2d2cc7cda8ea79f956fd6325a43f873948cf88b9979516f5b6a72b3e3f364
|
4
|
+
data.tar.gz: c52eea14384c0d239fdda08571abf6086dd9059d8a81e8c6b688a9bf3cce88b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70c5318b5c1b4859715e778246a42571c4a3d97895719b688093189eac1a57b40814494a93f4b24a7e1663b39e4892fd53098e45ca9f9972079fcbf02c06faae
|
7
|
+
data.tar.gz: ca52430fd386ee9cd88c94c0acd3c3336f0323392ed44506bb5ac89d566d6093c8c269ad4fef356dfaaa2ee77fdd16e939d22fb6ca25546a5455a01eea3dde27
|
data/lib/mimi/messaging.rb
CHANGED
@@ -17,8 +17,12 @@ module Mimi
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.get(name, data = {}, opts = {})
|
20
|
-
|
21
|
-
|
20
|
+
headers = {
|
21
|
+
method_name: name.to_s,
|
22
|
+
Mimi::Messaging::CONTEXT_ID_KEY => Mimi::Messaging.logger.context_id
|
23
|
+
}
|
24
|
+
_d, _m, response = Mimi::Messaging.get(
|
25
|
+
queue_name, encode(data), opts.deep_merge(headers: headers)
|
22
26
|
)
|
23
27
|
raise Timeout::Error unless response
|
24
28
|
message = new(decode(response))
|
@@ -27,8 +31,12 @@ module Mimi
|
|
27
31
|
end
|
28
32
|
|
29
33
|
def self.post(name, data = {}, opts = {})
|
34
|
+
headers = {
|
35
|
+
method_name: name.to_s,
|
36
|
+
Mimi::Messaging::CONTEXT_ID_KEY => Mimi::Messaging.logger.context_id
|
37
|
+
}
|
30
38
|
Mimi::Messaging.post(
|
31
|
-
queue_name, encode(data), opts.deep_merge(headers:
|
39
|
+
queue_name, encode(data), opts.deep_merge(headers: headers)
|
32
40
|
)
|
33
41
|
end
|
34
42
|
|
@@ -14,8 +14,12 @@ module Mimi
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.broadcast(name, data = {}, opts = {})
|
17
|
+
headers = {
|
18
|
+
method_name: name.to_s,
|
19
|
+
Mimi::Messaging::CONTEXT_ID_KEY => Mimi::Messaging.logger.context_id
|
20
|
+
}
|
17
21
|
Mimi::Messaging.broadcast(
|
18
|
-
notification_name, Message.encode(data), opts.merge(headers:
|
22
|
+
notification_name, Message.encode(data), opts.merge(headers: headers)
|
19
23
|
)
|
20
24
|
end
|
21
25
|
|
@@ -77,6 +77,7 @@ module Mimi
|
|
77
77
|
end
|
78
78
|
|
79
79
|
def initialize(d, m, p)
|
80
|
+
initialize_logging_context!(m.headers)
|
80
81
|
@request = Mimi::Messaging::Request.new(self.class, d, m, p)
|
81
82
|
@result = nil
|
82
83
|
method_name = request.method_name
|
@@ -89,6 +90,18 @@ module Mimi
|
|
89
90
|
end
|
90
91
|
end
|
91
92
|
|
93
|
+
# Initializes logging context.
|
94
|
+
#
|
95
|
+
# Starts a new logging contenxt or inherits a context id from the message headers.
|
96
|
+
#
|
97
|
+
# @param headers [Hash,nil] message headers
|
98
|
+
#
|
99
|
+
def initialize_logging_context!(headers)
|
100
|
+
context_id = (headers || {})[Mimi::Messaging::CONTEXT_ID_KEY]
|
101
|
+
return logger.new_context! unless context_id
|
102
|
+
logger.context_id = context_id
|
103
|
+
end
|
104
|
+
|
92
105
|
# Request logger
|
93
106
|
#
|
94
107
|
# Usage:
|
@@ -11,33 +11,92 @@ def message_class_for(queue_name)
|
|
11
11
|
message_class
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
14
|
+
def get_timeout(value = nil)
|
15
|
+
return @get_current_timeout = value if value
|
16
|
+
help_get_timeout
|
17
|
+
puts
|
18
|
+
puts "Curret GET timeout is set at #{get_current_timeout}s"
|
19
|
+
end
|
20
|
+
|
21
|
+
def help_get_timeout
|
22
|
+
puts 'Usage: get_timeout <seconds>'
|
23
|
+
puts
|
24
|
+
puts 'Sets a timeout for GET requests.'
|
25
|
+
puts
|
26
|
+
puts 'Example:'
|
27
|
+
puts " > get_timeout 15"
|
28
|
+
end
|
29
|
+
|
30
|
+
def get_current_timeout
|
31
|
+
@get_current_timeout || 5 # seconds
|
32
|
+
end
|
33
|
+
|
34
|
+
def get(queue_and_method_name = nil, params = {})
|
35
|
+
return help_get unless queue_and_method_name
|
15
36
|
queue_name, method_name = queue_and_method_name.split('/')
|
16
37
|
message_class = message_class_for(queue_name)
|
17
38
|
puts "GET #{queue_name}/#{method_name}: #{params}"
|
18
39
|
ts = Time.now
|
19
|
-
result = message_class.get(method_name, params)
|
40
|
+
result = message_class.get(method_name, params, timeout: get_current_timeout)
|
20
41
|
puts 'Completed in %.1fms' % ((Time.now - ts) * 1000.0)
|
21
42
|
result
|
22
43
|
end
|
23
44
|
|
24
|
-
def
|
45
|
+
def help_get
|
46
|
+
puts "Usage: get '<queue_name>/<method_name>' [, params]"
|
47
|
+
puts
|
48
|
+
puts 'Issues a GET request to a given queue/method and sends the message'
|
49
|
+
puts "constructed from params Hash. Awaits for a response for at most 'get_timeout' seconds."
|
50
|
+
puts
|
51
|
+
puts 'Example:'
|
52
|
+
puts " > get 'accounts/list', page: 2"
|
53
|
+
end
|
54
|
+
|
55
|
+
def post(queue_and_method_name = nil, params = {})
|
56
|
+
return help_post unless queue_and_method_name
|
25
57
|
queue_name, method_name = queue_and_method_name.split('/')
|
26
58
|
message_class = message_class_for(queue_name)
|
27
59
|
puts "POST #{queue_name}/#{method_name}: #{params}"
|
28
60
|
message_class.post(method_name, params)
|
61
|
+
nil
|
62
|
+
end
|
63
|
+
|
64
|
+
def help_post
|
65
|
+
puts "Usage: post '<queue_name>/<method_name>' [, params]"
|
66
|
+
puts
|
67
|
+
puts 'Issues a POST request to a given queue/method and sends the message'
|
68
|
+
puts 'constructed from params Hash. Returns immediately'
|
69
|
+
puts
|
70
|
+
puts 'Example:'
|
71
|
+
puts " > post 'accounts/create', name: 'Primary account', currency: 'BTC'"
|
29
72
|
end
|
30
73
|
|
31
|
-
def listen(notification_name)
|
74
|
+
def listen(notification_name = nil, *method_names)
|
75
|
+
return help_listen unless notification_name
|
32
76
|
listener_class = Class.new(Mimi::Messaging::Listener)
|
33
77
|
listener_class.notification(notification_name)
|
34
|
-
|
35
|
-
|
78
|
+
method_names.each do |method_name|
|
79
|
+
listener_class.send :define_method, method_name.to_sym do
|
80
|
+
puts "LISTEN #{listener_class.resource_name}/#{request.method_name}: #{params}"
|
81
|
+
end
|
82
|
+
puts "Listener for '#{notification_name}/#{method_name}' registered"
|
36
83
|
end
|
37
|
-
|
84
|
+
listener_class.start
|
85
|
+
puts "Listener for '#{notification_name}' started"
|
86
|
+
nil
|
38
87
|
end
|
39
88
|
|
40
|
-
def
|
89
|
+
def help_listen
|
90
|
+
puts "Usage: listen '<notification_name>' [, <method_name> ...]"
|
91
|
+
puts
|
92
|
+
puts 'Sets up a listener for notifications specified by notification and method names.'
|
93
|
+
puts
|
94
|
+
puts 'Example:'
|
95
|
+
puts " > listen 'accounts', :created, :updated"
|
96
|
+
end
|
97
|
+
|
98
|
+
def broadcast(notification_and_method_name = nil, params = {})
|
99
|
+
return help_broadcast unless notification_and_method_name
|
41
100
|
notification_name, method_name = notification_and_method_name.split('/')
|
42
101
|
notification_class = Class.new(Mimi::Messaging::Notification)
|
43
102
|
notification_class.notification(notification_name)
|
@@ -45,3 +104,13 @@ def broadcast(notification_and_method_name, params = {})
|
|
45
104
|
notification_class.broadcast(method_name, params)
|
46
105
|
nil
|
47
106
|
end
|
107
|
+
|
108
|
+
def help_broadcast
|
109
|
+
puts "Usage: broadcast '<notification_name>/<method_name>' [, params]"
|
110
|
+
puts
|
111
|
+
puts 'Broadcasts a notification message with a given name and method constructed'
|
112
|
+
puts 'from params Hash.'
|
113
|
+
puts
|
114
|
+
puts 'Example:'
|
115
|
+
puts " > broadcast 'accounts/updated', id: 213, name: 'Secondary account', currency: 'BCH'"
|
116
|
+
end
|
data/mimi-messaging.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
if spec.respond_to?(:metadata)
|
20
20
|
spec.metadata['allowed_push_host'] = 'https://rubygems.org/'
|
21
21
|
else
|
22
|
-
raise
|
22
|
+
raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
|
23
23
|
end
|
24
24
|
|
25
25
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
@@ -27,13 +27,13 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = ['lib']
|
29
29
|
|
30
|
-
spec.add_dependency 'mimi-core', '~> 0.1'
|
31
|
-
spec.add_dependency 'mimi-logger', '~> 0.1'
|
32
30
|
spec.add_dependency 'bunny', '~> 2.9'
|
31
|
+
spec.add_dependency 'mimi-core', '~> 0.1'
|
32
|
+
spec.add_dependency 'mimi-logger', '~> 0.2', '>= 0.2.3'
|
33
33
|
spec.add_dependency 'msgpack', '~> 1.2'
|
34
34
|
|
35
35
|
spec.add_development_dependency 'bundler', '~> 1.11'
|
36
|
+
spec.add_development_dependency 'pry', '~> 0.10'
|
36
37
|
spec.add_development_dependency 'rake', '~> 10.0'
|
37
38
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
38
|
-
spec.add_development_dependency 'pry', '~> 0.10'
|
39
39
|
end
|
metadata
CHANGED
@@ -1,31 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mimi-messaging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Kukushkin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: bunny
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.9'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.9'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: mimi-
|
28
|
+
name: mimi-core
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
@@ -39,19 +39,25 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: mimi-logger
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '2
|
47
|
+
version: '0.2'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 0.2.3
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
55
|
- - "~>"
|
53
56
|
- !ruby/object:Gem::Version
|
54
|
-
version: '2
|
57
|
+
version: '0.2'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.2.3
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: msgpack
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,47 +87,47 @@ dependencies:
|
|
81
87
|
- !ruby/object:Gem::Version
|
82
88
|
version: '1.11'
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
90
|
+
name: pry
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
86
92
|
requirements:
|
87
93
|
- - "~>"
|
88
94
|
- !ruby/object:Gem::Version
|
89
|
-
version: '10
|
95
|
+
version: '0.10'
|
90
96
|
type: :development
|
91
97
|
prerelease: false
|
92
98
|
version_requirements: !ruby/object:Gem::Requirement
|
93
99
|
requirements:
|
94
100
|
- - "~>"
|
95
101
|
- !ruby/object:Gem::Version
|
96
|
-
version: '10
|
102
|
+
version: '0.10'
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
104
|
+
name: rake
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
100
106
|
requirements:
|
101
107
|
- - "~>"
|
102
108
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
109
|
+
version: '10.0'
|
104
110
|
type: :development
|
105
111
|
prerelease: false
|
106
112
|
version_requirements: !ruby/object:Gem::Requirement
|
107
113
|
requirements:
|
108
114
|
- - "~>"
|
109
115
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
116
|
+
version: '10.0'
|
111
117
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
118
|
+
name: rspec
|
113
119
|
requirement: !ruby/object:Gem::Requirement
|
114
120
|
requirements:
|
115
121
|
- - "~>"
|
116
122
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0
|
123
|
+
version: '3.0'
|
118
124
|
type: :development
|
119
125
|
prerelease: false
|
120
126
|
version_requirements: !ruby/object:Gem::Requirement
|
121
127
|
requirements:
|
122
128
|
- - "~>"
|
123
129
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0
|
130
|
+
version: '3.0'
|
125
131
|
description: Communications via RabbitMQ for mimi
|
126
132
|
email:
|
127
133
|
- alex@kukushk.in
|
@@ -179,7 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
185
|
version: '0'
|
180
186
|
requirements: []
|
181
187
|
rubyforge_project:
|
182
|
-
rubygems_version: 2.
|
188
|
+
rubygems_version: 2.7.6
|
183
189
|
signing_key:
|
184
190
|
specification_version: 4
|
185
191
|
summary: Communications via RabbitMQ for mimi
|