@@ -15,53 +15,53 @@ Compatibility tests between Moleculer implementations (Node.js, Java, Go, Ruby)
15
15
### Service
16
16
| Feature | Node.js | Java | Go | Ruby |
17
17
| ----------------------------------- | --- | --- | --- | --- |
18
- | Versioned service | ✔️ | ✔️ | ❔ | ❌ |
19
- | Mixins | ✔️ | ❌ | ️❔ | ❌ |
20
- | Setting | ✔️ | ✔️ | ❔ | ✔ |
21
- | Metadata | ✔️ | ❌ | ❔ | ❌ |
22
- | Dependencies | ✔️ | ✔️ | ❔ | ✔ |
23
- | Lifecycle events | ✔️ | ️️️✔️ | ❔ | ❌ |
24
- | ` $node ` internal service | ✔️ | ❌ | ❔ | ❌ |
18
+ | Versioned service | ✔️ | ✔️ | ❌ | ❌ |
19
+ | Mixins | ✔️ | ❌ | ️️️✔ | ❌ |
20
+ | Setting | ✔️ | ✔️ | ✔ | ✔ |
21
+ | Metadata | ✔️ | ❌ | ✔ | ❌ |
22
+ | Dependencies | ✔️ | ✔️ | ✔ | ✔ |
23
+ | Lifecycle events | ✔️ | ️️️✔️ | ✔ | ❌ |
24
+ | ` $node ` internal service | ✔️ | ❌ | ✔ | ❌ |
25
25
| Class-based service | ✔️ | ✔️ | ✔️ | ✔️ |
26
26
27
27
### Action calls
28
28
| Feature | Node.js | Java | Go | Ruby |
29
29
| ----------------------------------- | --- | --- | --- | --- |
30
30
| Local call | ✔️ | ✔️ | ✔️ | ✔️ |
31
31
| Remote call | ✔️ | ✔️ | ✔️ | ✔️ |
32
- | Nested call | ✔️ | ✔️ | ❔️ | ❌ |
33
- | Direct call | ✔️ | ✔️ | ❔️ | ❌ |
34
- | Request metadata | ✔️ | ✔️ | ❔️ | ❌ |
35
- | Response metadata | ✔️ | ✔️ | ❔️ | ❌ |
36
- | Metadata merging | ✔️ | ✔️ | ❔️ | ❌ |
37
- | Parameter validation | ✔️ | ❌ | ❔ | ❌ |
38
- | Stream in request | ✔️ | ✔️ | ❔ | ❌ |
39
- | Stream in response | ✔️ | ✔️ | ❔ | ❌ |
40
- | Action visibility | ✔️ | ❌ | ❔ | ❔ |
41
- | Action hooks | ✔️ | ❌ | ❔ | ❌ |
32
+ | Nested call | ✔️ | ✔️ | ✔ | ❌ |
33
+ | Direct call | ✔️ | ✔️ | ✔ | ❌ |
34
+ | Request metadata | ✔️ | ✔️ | ✔ | ❌ |
35
+ | Response metadata | ✔️ | ✔️ | ✔ | ❌ |
36
+ | Metadata merging | ✔️ | ✔️ | ✔ | ❌ |
37
+ | Parameter validation | ✔️ | ❌ | ❌ | ❌ |
38
+ | Stream in request | ✔️ | ✔️ | ❌ | ❌ |
39
+ | Stream in response | ✔️ | ✔️ | ❌ | ❌ |
40
+ | Action visibility | ✔️ | ❌ | ❌ | ❔ |
41
+ | Action hooks | ✔️ | ❌ | ❌ | ❌ |
42
42
43
43
### Events
44
44
| Feature | Node.js | Java | Go | Ruby |
45
45
| ----------------------------------- | --- | --- | --- | --- |
46
- | Balanced events | ✔️ | ✔️ | ❔ | ✔ |
47
- | Broadcast events | ✔️ | ✔️ | ❔️ | ❌ |
48
- | BroadcastLocal events | ✔️ | ✔️ | ❔️ | ❌ |
46
+ | Balanced events | ✔️ | ✔️ | ✔ | ✔ |
47
+ | Broadcast events | ✔️ | ✔️ | ✔ | ❌ |
48
+ | BroadcastLocal events | ✔️ | ✔️ | ✔ | ❌ |
49
49
| Context-based events | ✔️ | ️️❌️ | ❌️ | ❌ |
50
- | Custom group definition | ✔️ | ️️✔️ | ❔ | ❌ |
50
+ | Custom group definition | ✔️ | ️️✔️ | ✔ | ❌ |
51
51
| ** Internal events** | ️ | ️️ | | |
52
- | ` $services.changed ` | ✔️ | ️️❌️ | ❌️ | ❌ |
52
+ | ` $services.changed ` | ✔️ | ️️❌️ | ✔ | ❌ |
53
53
| ` $node.* ` | ✔️ | ️️❌️ | ❌️ | ❌ |
54
54
| ` $broker.* ` | ✔️ | ️️❌️ | ❌️ | ❌ |
55
55
| ` $transporter.* ` | ✔️ | ️️❌️ | ❌️ | ❌ |
56
56
57
57
### Fault-tolerance
58
58
| Feature | Node.js | Java | Go | Ruby |
59
59
| ------------------------------------- | --- | --- | --- | --- |
60
- | Circuit Breaker | ✔️ | ✔️ | ❔ | ❔ |
61
- | Retry | ✔️ | ✔️ | ❔ | ❔ |
62
- | Timeout | ✔️ | ✔️ | ❔ | ❔ |
63
- | Bulkhead | ✔️ | ❌️ | ❔ | ❔ |
64
- | Fallback | ✔️ | ❌️ | ❔ | ❔ |
60
+ | Circuit Breaker | ✔️ | ✔️ | ❌️ | ❔ |
61
+ | Retry | ✔️ | ✔️ | ❌️ | ❔ |
62
+ | Timeout | ✔️ | ✔️ | ❌️ | ❔ |
63
+ | Bulkhead | ✔️ | ❌️ | ❌️ | ❔ |
64
+ | Fallback | ✔️ | ❌️ | ️️️️️️❌️ | ❔ |
65
65
66
66
### Transporters
67
67
| Feature | Node.js | Java | Go | Ruby |
@@ -72,36 +72,36 @@ Compatibility tests between Moleculer implementations (Node.js, Java, Go, Ruby)
72
72
| AMQP (0.9) | ✔️ | ✔️ | ❌ | ❌ |
73
73
| AMQP (1.0) | ❌ | ❌ | ❌ | ❌ |
74
74
| Kafka | ✔️ | ✔️ | ❌ | ❌ |
75
- | NATS Streaming | ✔️ | ❌ | ❌ | ❌ |
75
+ | NATS Streaming | ✔️ | ❌ | ✔️ | ❌ |
76
76
| TCP | ✔️ | ✔️ | ❌ | ❌ |
77
77
| Google PubSub | ❌ | ✔️ | ❌ | ❌ |
78
78
| JMS | ❌ | ✔️ | ❌ | ❌ |
79
- | Custom | ✔️ | ✔️ | ❔ | ❌ |
80
- | Disabled balancing | ✔️ | ❌ | ❌ | ❌ |
79
+ | Custom | ✔️ | ✔️ | ✔️ | ❌ |
80
+ | Disabled balancing | ✔️ | ❌ | ✔️ | ❌ |
81
81
82
82
### Serializers
83
83
| Feature | Node.js | Java | Go | Ruby |
84
84
| ------------------------------------- | --- | --- | --- | --- |
85
85
| JSON | ✔️ | ✔️ | ✔️ | ✔️ |
86
86
| MsgPack/Notepack | ✔️ | ✔️ | ❔ | ❌ |
87
- | Avro | ✔️ | ❌ | ❔ | ❌ |
88
- | Protocol Buffer | ✔️ | ❌ | ❔ | ❌ |
89
- | Thrift | ✔️ | ❌ | ❔ | ❌ |
87
+ | Avro | ✔️ | ❌ | ❌ | ❌ |
88
+ | Protocol Buffer | ✔️ | ❌ | ❌ | ❌ |
89
+ | Thrift | ✔️ | ❌ | ❌ | ❌ |
90
90
| CBOR | ❌ | ✔️ | ❌ | ❌ |
91
91
| Amazon Ion | ❌ | ✔️ | ❌ | ❌ |
92
92
| BSON | ❌ | ✔️ | ❌ | ❌ |
93
93
| SMILE | ❌ | ✔️ | ❌ | ❌ |
94
- | Custom | ✔️ | ✔️ | ❔ | ❔ |
94
+ | Custom | ✔️ | ✔️️️️️️️️ | ✔️ | ❔ |
95
95
96
96
### Strategies
97
97
| Feature | Node.js | Java | Go | Ruby |
98
98
| ------------------------------------- | --- | --- | --- | --- |
99
99
| Round-Robin | ✔️ | ✔️ | ✔️ | ️️✔️ |
100
- | Random | ✔️ | ✔️ | ❔ | ❌ |
100
+ | Random | ✔️ | ✔️ | ✔️ | ❌ |
101
101
| CPU usage | ✔️ | ✔️ | ❌️ | ❌️ |
102
102
| Latency-based | ✔️ | ✔️ | ❌️ | ❌️ |
103
103
| Sharding | ✔️ | ❌ | ❌ | ❌ |
104
- | Custom | ✔️ | ✔️ | ❔ | ❔ |
104
+ | Custom | ✔️ | ✔️ | ✔️ | ❔ |
105
105
106
106
### Caching
107
107
| Feature | Node.js | Java | Go | Ruby |
@@ -122,12 +122,12 @@ Compatibility tests between Moleculer implementations (Node.js, Java, Go, Ruby)
122
122
### Middlewares
123
123
| Feature | Node.js | Java | Go | Ruby |
124
124
| ------------------------------------- | --- | --- | --- | --- |
125
- | Middleware support | ✔️ | ✔️ | ❌ | ❌ |
125
+ | Middleware support | ✔️ | ✔️ | ✔️ | ❌ |
126
126
| ** Hooks** | | | | |
127
127
| - ` localAction ` | ✔️ | ✔️ | ❌ | ❌ |
128
128
| - ` remoteAction ` | ✔️ | ✔️ | ❌ | ❌ |
129
129
| - ` localEvent ` | ✔️ | ❌ | ❌ | ❌ |
130
- | - ` createService ` | ✔️ | ❌ | ❌ | ❌ |
130
+ | - ` createService ` | ✔️ | ❌ | ✔️ | ❌ |
131
131
| - ` destroyService ` | ✔️ | ❌ | ❌ | ❌ |
132
132
| - ` call ` | ✔️ | ❌ | ❌ | ❌ |
133
133
| - ` mcall ` | ✔️ | ❌ | ❌ | ❌ |
@@ -145,19 +145,19 @@ Compatibility tests between Moleculer implementations (Node.js, Java, Go, Ruby)
145
145
| - ` transitMessageHandler ` | ✔️ | ❌ | ❌ | ❌ |
146
146
| - ` transporterSend ` | ✔️ | ❌ | ❌ | ❌ |
147
147
| - ` transporterReceive ` | ✔️ | ❌ | ❌ | ❌ |
148
- | - ` created ` | ✔️ | ❌ | ❌ | ❌ |
149
- | - ` starting ` | ✔️ | ❌ | ❌ | ❌ |
150
- | - ` started ` | ✔️ | ❌ | ❌ | ❌ |
151
- | - ` stopping ` | ✔️ | ❌ | ❌ | ❌ |
152
- | - ` stopped ` | ✔️ | ❌ | ❌ | ❌ |
148
+ | - ` created ` | ✔️ | ❌ | ✔️ | ❌ |
149
+ | - ` starting ` | ✔️ | ❌ | ✔️ | ❌ |
150
+ | - ` started ` | ✔️ | ❌ | ✔️ | ❌ |
151
+ | - ` stopping ` | ✔️ | ❌ | ✔️ | ❌ |
152
+ | - ` stopped ` | ✔️ | ❌ | ✔️ | ❌ |
153
153
154
154
### Metrics
155
155
| Feature | Node.js | Java | Go | Ruby |
156
156
| ------------------------------------- | --- | --- | --- | --- |
157
- | Metrics support | ✔️ | ❌ | ❌ | ❌ |
158
- | OS metrics | ✔️ | ❌ | ❌ | ❌ |
159
- | Process metrics | ✔️ | ❌ | ❌ | ❌ |
160
- | Moleculer metrics | ✔️ | ❌ | ❌ | ❌ |
157
+ | Metrics support | ✔️ | ❌ | ✔️ | ❌ |
158
+ | OS metrics | ✔️ | ❌ | ✔️ | ❌ |
159
+ | Process metrics | ✔️ | ❌ | ✔️ | ❌ |
160
+ | Moleculer metrics | ✔️ | ❌ | ✔️ | ❌ |
161
161
| User-defined metrics | ✔️ | ❌ | ❌ | ❌ |
162
162
| ** Metric types** | | | | |
163
163
| - Counter type | ✔️ | ❌ | ❌ | ❌ |
@@ -172,7 +172,7 @@ Compatibility tests between Moleculer implementations (Node.js, Java, Go, Ruby)
172
172
| - CSV | ✔️ | ❌ | ❌ | ❌ |
173
173
| - Event | ✔️ | ❌ | ❌ | ❌ |
174
174
| - Datadog | ✔️ | ❌ | ❌ | ❌ |
175
- | - Prometheus | ✔️ | ❌ | ❌ | ❌ |
175
+ | - Prometheus | ✔️ | ❌ | ✔️ | ❌ |
176
176
| - StatsD (UDP) | ✔️ | ❌ | ❌ | ❌ |
177
177
| - Custom reporter | ✔️ | ❌ | ❌ | ❌ |
178
178
| Multi reporters | ✔️ | ❌ | ❌ | ❌ |
@@ -197,18 +197,18 @@ Compatibility tests between Moleculer implementations (Node.js, Java, Go, Ruby)
197
197
### Errors
198
198
| Feature | Node.js | Java | Go | Ruby |
199
199
| ------------------------------------- | --- | --- | --- | --- |
200
- | ` MoleculerError ` | ✔️ | ️️✔️ | ❔ | ❌ |
201
- | ` MoleculerRetryableError ` | ✔️ | ❔ | ❔ | ❌ |
202
- | ` MoleculerServerError ` | ✔️ | ❔ | ❔ | ❌ |
203
- | ` MoleculerClientError ` | ✔️ | ❔ | ❔ | ❌ |
200
+ | ` MoleculerError ` | ✔️ | ️️✔️ | ❌ | ❌ |
201
+ | ` MoleculerRetryableError ` | ✔️ | ❔ | ❌ | ❌ |
202
+ | ` MoleculerServerError ` | ✔️ | ❔ | ❌ | ❌ |
203
+ | ` MoleculerClientError ` | ✔️ | ❔ | ❌ | ❌ |
204
204
205
205
### Additional features
206
206
| Feature | Node.js | Java | Go | Ruby |
207
207
| ------------------------------------- | --- | --- | --- | --- |
208
- | Hot-reload | ✔️ | ❌ | ❔ | ❌ |
209
- | Runner/Starter | ✔️ | ✔️ | ❔ | ✔ |
210
- | API Gateway | ✔️ | ✔️ | ❔ | ❌ |
211
- | DB access service | ✔️ | ✔️ | ❔ | ❌ |
212
- | Ping nodes | ✔️ | ✔️ | ❔ | ❌ |
213
- | Heartbeat | ✔️ | ✔️ | ❔ | ✔ |
208
+ | Hot-reload | ✔️ | ❌ | ❌ | ❌ |
209
+ | Runner/Starter | ✔️ | ✔️ | ✔ | ✔ |
210
+ | API Gateway | ✔️ | ✔️ | ✔ | ❌ |
211
+ | DB access service | ✔️ | ✔️ | ✔ | ❌ |
212
+ | Ping nodes | ✔️ | ✔️ | ✔ | ❌ |
213
+ | Heartbeat | ✔️ | ✔️ | ✔ | ✔ |
214
214
0 commit comments