This tutorial will demonstrate how to instrument your application with Dapr, and run it locally on your machine.
You will deploying advanced order
applications with Unix domain socket based on Hello World.
There is a great performance imporvement With Unix domain socket, please notice that it does not support on Windows.
This quickstart requires you to have the following installed on your machine:
The order.go is a simple command line application, that implements four commands:
put
sends an order with configurable order ID.get
return the current order number.del
deletes the order.seq
streams a sequence of orders with incrementing order IDs.
First, the app instantiates Dapr client:
client, err := dapr.NewClientWithSocket(socket)
if err != nil {
panic(err)
}
defer client.Close()
Then, depending on the command line argument, the app invokes corresponding method:
Persist the state:
err := client.SaveState(ctx, stateStoreName, "order", []byte(strconv.Itoa(orderID)), nil)
Retrieve the state:
item, err := client.GetState(ctx, stateStoreName, "order", nil)
Delete the state:
err := client.DeleteState(ctx, stateStoreName, "order", nil)
- Build the app
make
- Run the app
There are two ways to launch Dapr applications. You can pass the app executable to the Dapr runtime:
dapr run --app-id order-app --log-level error --unix-domain-socket /tmp -- ./order put --id 20
dapr run --app-id order-app --log-level error --unix-domain-socket /tmp ./order get
Alternatively, you can start a standalone Dapr runtime, and call the app from another shell:
dapr run --app-id order-app --log-level error --unix-domain-socket /tmp
./order put --id 10
./order get
To terminate your services, simply stop the "dapr run" process, or use the Dapr CLI "stop" command:
dapr stop --app-id order-app
- Run multiple apps
You can run more than one app in Dapr runtime. In this example you will call order seq
which sends a sequence of orders.
Another instance of the order
app will read the state.
dapr run --app-id order-app --log-level error --unix-domain-socket /tmp ./order seq
./order get