moleculer 0.1.0 → 0.1.1
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 +4 -4
- data/.travis.yml +1 -1
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +2 -2
- data/README.md +45 -2
- data/examples/benchmark_server.rb +1 -1
- data/lib/moleculer/broker.rb +5 -4
- data/lib/moleculer/configuration.rb +4 -0
- data/lib/moleculer/node.rb +3 -2
- data/lib/moleculer/registry.rb +1 -1
- data/lib/moleculer/service/base.rb +1 -1
- data/lib/moleculer/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: adca17fdd330fd7afa3d94ffd7768e1b1c732b9a6ff106defd5dcd6b7437f9ab
|
4
|
+
data.tar.gz: '097cb23699252db25857b462712f18279c4fb712ccb6b5873d846c897ae6447f'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 476c7b017f50e95d1bbbba1b3ee933dc9b0168265a2386d250ec74cdba1989839753896f4a55e639e8e783ee2731d44e36cfa7e7f35cd1ca9c40971b176742bc
|
7
|
+
data.tar.gz: 6c1ab62da8bb22d066adc09507ee3010112eeefc53f85f26d3d3d4c523ef7d0f2ec6909fe7d40b4831b0b5303e12b073357309fda66b09648ac512975e7080a6
|
data/.travis.yml
CHANGED
@@ -11,7 +11,7 @@ rvm:
|
|
11
11
|
env:
|
12
12
|
global:
|
13
13
|
- CC_TEST_REPORTER_ID=270a7dd1c7f3f40fdb0d62c2403dd1f643e4cadbf6b8f5992e74b62ea4e6974b
|
14
|
-
before_install: gem install bundler -v 1.
|
14
|
+
before_install: gem install bundler -v 1.17.1
|
15
15
|
before_script:
|
16
16
|
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
17
17
|
- chmod +x ./cc-test-reporter
|
data/CHANGELOG.md
ADDED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
moleculer (0.1.
|
4
|
+
moleculer (0.1.1)
|
5
5
|
awesome_print (~> 1.8)
|
6
6
|
concurrent-ruby (~> 1.0)
|
7
7
|
ougai (~> 1.7)
|
@@ -14,7 +14,7 @@ GEM
|
|
14
14
|
diff-lcs (1.3)
|
15
15
|
docile (1.3.1)
|
16
16
|
json (2.1.0)
|
17
|
-
oj (3.7.
|
17
|
+
oj (3.7.12)
|
18
18
|
ougai (1.7.1)
|
19
19
|
oj (~> 3.4)
|
20
20
|
rake (10.5.0)
|
data/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# Moleculer
|
2
|
+

|
3
|
+
|
2
4
|
[](https://travis-ci.org/moleculer-ruby/moleculer)
|
3
5
|
[](https://codeclimate.com/github/moleculer-ruby/moleculer/maintainability)
|
4
6
|
[](https://codeclimate.com/github/moleculer-ruby/moleculer/test_coverage)
|
@@ -22,22 +24,63 @@ microservices.
|
|
22
24
|
- all nodes are equal, no master/leader node
|
23
25
|
|
24
26
|
|
27
|
+
## Getting Started
|
28
|
+
### Install the Gem
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
gem install "moleculer-ruby"
|
32
|
+
```
|
33
|
+
|
34
|
+
or add to your Gemfile:
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
gem "moleculer-ruby", "~>0.1"
|
38
|
+
```
|
39
|
+
|
40
|
+
### Create a Simple Service
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
class SimpleService < Moleculer::Service::Base
|
44
|
+
action :get_user, :get_user
|
45
|
+
|
46
|
+
|
47
|
+
def get_user
|
48
|
+
# .. usery getting stuff
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
Moleculer.config do |c|
|
54
|
+
c.services << SimpleService
|
55
|
+
end
|
56
|
+
|
57
|
+
Moleculer.start
|
58
|
+
|
59
|
+
```
|
60
|
+
|
61
|
+
|
25
62
|
## Configuration
|
26
63
|
|
27
64
|
Moleculer is configured through the Moleculer::config method. Example:
|
28
65
|
|
29
66
|
```ruby
|
30
|
-
Moleculer.
|
31
|
-
c.log_level :debug
|
67
|
+
Moleculer.configure do |c|
|
68
|
+
c.log_level = :debug
|
32
69
|
end
|
33
70
|
```
|
34
71
|
|
35
72
|
### Configuration Options
|
36
73
|
|
74
|
+
#### logger (default: Ougai::Logger)
|
75
|
+
Sets teh Moleculer logger, this must be a Ruby `Logger` or `Ougai` compatible logger.
|
76
|
+
|
37
77
|
#### log_level (default: debug)
|
38
78
|
Sets the log level of the node. defaults to `:debug`. Can be one of `:trace`, `:debug`, `:info`, `:warn`, `:error`,
|
39
79
|
`:fatal`.
|
40
80
|
|
81
|
+
#### heartbeat_interval (default: 5)
|
82
|
+
The interval in which to send heartbeats.
|
83
|
+
|
41
84
|
#### node_id (default: \<hostname\>-\<pid\>)
|
42
85
|
The node id. Node IDs are required to be unique. In Moleculer-ruby all node ids are suffixed with the PID of the
|
43
86
|
running process, allowing multiple copies of the same node to be run on the same machine. When using a containerized
|
data/lib/moleculer/broker.rb
CHANGED
@@ -138,9 +138,9 @@ module Moleculer
|
|
138
138
|
|
139
139
|
def process_event(packet)
|
140
140
|
@logger.debug("processing event '#{packet.event}'")
|
141
|
-
events = @registry.
|
141
|
+
events = @registry.fetch_events_for_emit(packet.event)
|
142
142
|
|
143
|
-
events.each { |e| e.execute(packet.data) }
|
143
|
+
events.each { |e| e.execute(packet.data, self) }
|
144
144
|
rescue StandardError => e
|
145
145
|
@logger.error e
|
146
146
|
end
|
@@ -182,7 +182,7 @@ module Moleculer
|
|
182
182
|
end
|
183
183
|
|
184
184
|
def publish(packet_type, message = {})
|
185
|
-
packet = Packets.for(packet_type).new(message)
|
185
|
+
packet = Packets.for(packet_type).new(message.merge(sender: @registry.local_node.id))
|
186
186
|
@transporter.publish(packet)
|
187
187
|
end
|
188
188
|
|
@@ -222,7 +222,8 @@ module Moleculer
|
|
222
222
|
|
223
223
|
def register_local_node
|
224
224
|
@logger.info "registering #{services.length} local services"
|
225
|
-
|
225
|
+
services.each { |s| s.broker = self }
|
226
|
+
node = Node.new(
|
226
227
|
node_id: node_id,
|
227
228
|
services: services,
|
228
229
|
local: true,
|
data/lib/moleculer/node.rb
CHANGED
@@ -83,12 +83,13 @@ module Moleculer
|
|
83
83
|
|
84
84
|
def as_json
|
85
85
|
{
|
86
|
+
sender: @id,
|
86
87
|
config: {},
|
87
88
|
seq: 1,
|
88
89
|
ipList: [],
|
89
90
|
hostname: @hostname,
|
90
91
|
services: @services.values.map(&:as_json),
|
91
|
-
client: client_attrubutes
|
92
|
+
client: client_attrubutes,
|
92
93
|
}
|
93
94
|
end
|
94
95
|
|
@@ -98,7 +99,7 @@ module Moleculer
|
|
98
99
|
{
|
99
100
|
type: "Ruby",
|
100
101
|
version: Moleculer::VERSION,
|
101
|
-
lang_version: RUBY_VERSION
|
102
|
+
lang_version: RUBY_VERSION,
|
102
103
|
}
|
103
104
|
end
|
104
105
|
end
|
data/lib/moleculer/registry.rb
CHANGED
@@ -130,7 +130,7 @@ module Moleculer
|
|
130
130
|
def fetch_events(event_name)
|
131
131
|
return [] unless @events[event_name]
|
132
132
|
|
133
|
-
@events[event_name].fetch_nodes.map { |n| n.events[event_name] }.flatten
|
133
|
+
@events[event_name].fetch_nodes.map { |n| n.events[event_name] }.flatten.uniq { |e| e.service.service_name }
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
data/lib/moleculer/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moleculer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fugufish
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -162,6 +162,7 @@ files:
|
|
162
162
|
- ".rubocop.yml"
|
163
163
|
- ".travis.yml"
|
164
164
|
- ".yardopts"
|
165
|
+
- CHANGELOG.md
|
165
166
|
- CODE_OF_CONDUCT.md
|
166
167
|
- Gemfile
|
167
168
|
- Gemfile.lock
|