Inspired and compatible with Moleculer JS
You can currently do all the basics of emit
, broadcast
and call
.
However it only works with the NATS
transporter and JSON
serializer/deserializer.
Available on crates: crates.io/moleculer
Simple example showing how to receive an event, for more check the examples folder
```rust
async fn main() -> eyre::Result<()> { envlogger::init(); coloreyre::install()?;
// build config
let config = ConfigBuilder {
transporter: Transporter::nats("nats://localhost:4222"),
..ConfigBuilder::default()
}
.build();
// create the first event
let print_hi = EventBuilder::new("printHi").add_callback(print_hi).build();
// create the second event
let print_name = EventBuilder::new("printName")
.add_callback(print_name)
.build();
// create a service with events
let greeter_service = Service::new("rustGreeter")
.add_event(print_hi)
.add_event(print_name);
// create service broker with service
let service_broker = ServiceBroker::new(config).add_service(greeter_service);
// start the service broker
service_broker.start().await;
Ok(())
}
// callback for first event, will be called whenever "printHi" event is received
fn printhi(ctx: Context
// callback for second event, will be called whenever "printName" event is received
fn printname(ctx: Context
println!("Hello to: {} from Rust", msg.name);
Ok(())
}
struct PrintNameMessage { name: String, } ```
emit
and broadcast
eventscall
to send request and wait for response (#20)