quickstarts/configuration/go/sdk/order-processor/app.go

53 lines
1.3 KiB
Go

package main
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
"time"
dapr "github.com/dapr/go-sdk/client"
)
var DAPR_CONFIGURATION_STORE = "configstore"
var CONFIGURATION_KEYS = []string{"orderId1", "orderId2"}
func main() {
client, err := dapr.NewClient()
if err != nil {
log.Panic(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
// Get config items from config store
for _, key := range CONFIGURATION_KEYS {
config, err := client.GetConfigurationItem(ctx, DAPR_CONFIGURATION_STORE, key)
if err != nil {
fmt.Printf("Could not get config item, err:" + err.Error())
os.Exit(1)
}
c, _ := json.Marshal(config)
fmt.Println("Configuration for " + key + ": " + string(c))
}
// Subscribe for config changes
subscriptionID, err := client.SubscribeConfigurationItems(ctx, DAPR_CONFIGURATION_STORE, CONFIGURATION_KEYS, func(id string, items map[string]*dapr.ConfigurationItem) {
// Print config changes
for k, v := range items {
fmt.Printf("get updated config key = %s, value = %s \n", k, v.Value)
}
})
if err != nil {
fmt.Println("Error subscribing to config updates, err:" + err.Error())
os.Exit(1)
}
fmt.Println("App subscribed to config changes with subscription id: " + subscriptionID)
<-ctx.Done()
os.Exit(0)
}