Skip to content

Compatibility tests between Moleculer implementations (Node.js, Java, Go, Ruby)

License

Notifications You must be signed in to change notification settings

moleculer-framework/compatibility-tests

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

compatibility-tests

Compatibility tests between Moleculer implementations (Node.js, Java, Go, Ruby)

Projects

Name Language Repository Latest version Lead Maintainer
moleculer-js Node.js https://github.com/moleculerjs/moleculer 0.14.2 icebob
moleculer-java Java https://github.com/moleculer-java/moleculer-java 1.2.7 berkesa
moleculer-go Go https://github.com/moleculer-go/moleculer 0.2.1 pentateu
moleculer-ruby Ruby https://github.com/moleculer-ruby/moleculer 0.3 fugufish

Feature Matrix

Service

Feature Node.js Java Go Ruby
Versioned service ✔️ ✔️
Mixins ✔️ ️️️✔
Setting ✔️ ✔️
Metadata ✔️
Dependencies ✔️ ✔️
Lifecycle events ✔️ ️️️✔️
$node internal service ✔️
Class-based service ✔️ ✔️ ✔️ ✔️

Action calls

Feature Node.js Java Go Ruby
Local call ✔️ ✔️ ✔️ ✔️
Remote call ✔️ ✔️ ✔️ ✔️
Nested call ✔️ ✔️
Direct call ✔️ ✔️
Request metadata ✔️ ✔️
Response metadata ✔️ ✔️
Metadata merging ✔️ ✔️
Parameter validation ✔️
Stream in request ✔️ ✔️
Stream in response ✔️ ✔️
Action visibility ✔️
Action hooks ✔️

Events

Feature Node.js Java Go Ruby
Balanced events ✔️ ✔️
Broadcast events ✔️ ✔️
BroadcastLocal events ✔️ ✔️
Context-based events ✔️ ️️✔️ ❌️
Custom group definition ✔️ ️️✔️
Internal events ️️
$services.changed ✔️ ️️✔️
$node.* ✔️ ️️❌️ ❌️
$broker.* ✔️ ️️❌️ ❌️
$transporter.* ✔️ ️️❌️ ❌️

Fault-tolerance

Feature Node.js Java Go Ruby
Circuit Breaker ✔️ ✔️ ❌️
Retry ✔️ ✔️ ❌️
Timeout ✔️ ✔️ ❌️
Bulkhead ✔️ ❌️ ❌️
Fallback ✔️ ❌️ ️️️️️️❌️

Transporters

Feature Node.js Java Go Ruby
NATS ✔️ ✔️ ✔️
Redis ✔️ ✔️
MQTT ✔️ ✔️
AMQP (0.9) ✔️ ✔️
AMQP (1.0)
Kafka ✔️ ✔️
NATS Streaming ✔️ ✔️
TCP ✔️ ✔️
Google PubSub ✔️
JMS ✔️
Custom ✔️ ✔️ ✔️
Disabled balancing ✔️ ✔️

Serializers

Feature Node.js Java Go Ruby
JSON ✔️ ✔️ ✔️ ✔️
MsgPack/Notepack ✔️ ✔️
Avro ✔️
Protocol Buffer ✔️
Thrift ✔️
CBOR ✔️
Amazon Ion ✔️
BSON ✔️
SMILE ✔️
Custom ✔️ ✔️️️️️️️️ ✔️

Strategies

Feature Node.js Java Go Ruby
Round-Robin ✔️ ✔️ ✔️ ️️✔️
Random ✔️ ✔️ ✔️
CPU usage ✔️ ✔️ ❌️ ❌️
Latency-based ✔️ ✔️ ❌️ ❌️
Shard ✔️ ✔️
Custom ✔️ ✔️ ✔️
Action-level strategy ✔️

Caching

Feature Node.js Java Go Ruby
Caching support ✔️ ✔️
Time-To-Live ✔️ ✔️
Custom key generator ✔️ ✔️
Manual caching ✔️ ✔️
Cache locking ✔️ ✔️
Cachers
- Memory ✔️ ✔️
- Memory LRU ✔️ ✔️
- Redis ✔️ ✔️
- JCache ✔️
- Off-heap ✔️
- Custom ✔️ ✔️

Middlewares

Feature Node.js Java Go Ruby
Middleware support ✔️ ✔️ ✔️
Hooks
- localAction ✔️ ✔️
- remoteAction ✔️ ✔️
- localEvent ✔️
- createService ✔️ ✔️
- destroyService ✔️
- call ✔️
- mcall ✔️
- emit ✔️
- broadcast ✔️
- broadcastLocal ✔️
- serviceCreated ✔️
- serviceStarting ✔️
- serviceStarted ✔️
- serviceStopping ✔️
- serviceStopped ✔️
- registerLocalService ✔️
- serviceCreating ✔️
- transitPublish ✔️
- transitMessageHandler ✔️
- transporterSend ✔️
- transporterReceive ✔️
- created ✔️ ✔️
- starting ✔️ ✔️
- started ✔️ ✔️
- stopping ✔️ ✔️
- stopped ✔️ ✔️

Metrics

Feature Node.js Java Go Ruby
Metrics support ✔️ ✔️
OS metrics ✔️ ✔️
Process metrics ✔️ ✔️
Moleculer metrics ✔️ ✔️
User-defined metrics ✔️
Metric types
- Counter type ✔️
- Gauge type ✔️
- Info type ✔️
- Histogram type ✔️
- - Quantiles ✔️
- - Buckets ✔️
- - Rates ✔️
Reporters
- Console ✔️
- CSV ✔️
- Event ✔️
- Datadog ✔️
- Prometheus ✔️ ✔️
- StatsD (UDP) ✔️
- Custom reporter ✔️
Multi reporters ✔️

Tracing

Feature Node.js Java Go Ruby
Tracing support ✔️
Nested spans ✔️
Action span ✔️
Event span ✔️
User-defined span ✔️
Exporters
- Console ✔️
- Datadog ✔️
- Event ✔️
- Jaeger ✔️
- Zipkin ✔️
- Custom exporter ✔️
Multi exporters ✔️

Errors

Feature Node.js Java Go Ruby
MoleculerError ✔️ ️️✔️
MoleculerRetryableError ✔️ ✔️
MoleculerServerError ✔️ ✔️
MoleculerClientError ✔️ ✔️

Additional features

Feature Node.js Java Go Ruby
Hot-reload ✔️ ✔️
Runner/Starter ✔️ ✔️
API Gateway ✔️ ✔️
DB access service ✔️
Ping nodes ✔️ ✔️
Heartbeat ✔️ ✔️

About

Compatibility tests between Moleculer implementations (Node.js, Java, Go, Ruby)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published