///|
fn main {
let router = @demo11_syh.EventRouter::new().add_rule(
@demo11_syh.RouteRule::new(
"orders",
"incoming.orders",
@demo11_syh.RouteFanOut(["orders.work", "orders.audit"]),
),
)
let bus = @demo11_syh.EventBus::new(name="demo")
.subscribe("worker", topic="orders.work", (event, _) => {
@demo11_syh.OutcomeHandled("processed " + event.payload)
})
.subscribe("audit", topic="orders.audit", (_, _) => {
@demo11_syh.OutcomeHandled("recorded")
})
let routed = router.route(
@demo11_syh.Event::new(
"order.created",
topic="incoming.orders",
payload="order-42",
correlation_id="request-42",
),
)
let (_, reports) = routed.publish(bus)
let metrics = @demo11_syh.metrics_from_reports(reports)
println(metrics.summary())
}