wowLocal
Starts several Wow services in this JVM, on the memory backend and without a broker, for a local run: development, a front end against its back ends, a demo. Each service serves its own contexts alone (wow.contexts.include) in a development profile (dev), so a request names its caller in the development identity headers, and they share one InMemoryTopics of partitions partitions, their logs' too: each one's sagas send other contexts' commands through it, its published streams are written to it, and it executes the commands sent to its own command topics, so a flow across the services runs as it does on Kafka.
The services start in the order services lists them, and each one calls the services listed before it: its wow.peers.<context>.url names the internal port of each context they serve. So list a called service before its callers. On ports the system chooses (LocalPorts.RANDOM), or each service's own (LocalPorts.FIXED, the default, which wow-local.ports changes); a service that names no port then fails to start. A service that fails to start closes the ones started before it. Close the WowLocal to stop them all, the last started first.
wowLocal {
service<OrderingServer>("eshop-ordering-service", listOf("eshop-ordering"), 8083, 9093)
service<BasketServer>("eshop-basket-service", listOf("eshop-basket"), 8082, 9092)
}.use { shop -> println(shop.publicPorts) }