From d5ffe7750ace759a5b1318a09fc7d6b24ca62ac7 Mon Sep 17 00:00:00 2001 From: syedsadath-17 <90619459+sadath-12@users.noreply.github.com> Date: Thu, 28 Dec 2023 07:49:04 +0530 Subject: [PATCH] perf: enhanced configuration example (#483) * perf: enhanced configuration example Signed-off-by: sadath-12 * remove "with" Signed-off-by: sadath-12 * update markdown Signed-off-by: sadath-12 * minor fix Signed-off-by: sadath-12 --------- Signed-off-by: sadath-12 --- examples/configuration/README.md | 48 +++++++++++++++++++------------- examples/configuration/main.go | 17 +++++++---- 2 files changed, 39 insertions(+), 26 deletions(-) diff --git a/examples/configuration/README.md b/examples/configuration/README.md index db8bb37c..d33760c5 100644 --- a/examples/configuration/README.md +++ b/examples/configuration/README.md @@ -13,16 +13,16 @@ name: Run Configuration Client output_match_mode: substring match_order: none expected_stdout_lines: - - '== APP == get config = myConfigValue' - - '== APP == get updated config key = mySubscribeKey1, value = mySubscribeValue1' - - '== APP == get updated config key = mySubscribeKey2, value = mySubscribeValue1' - - '== APP == get updated config key = mySubscribeKey3, value = mySubscribeValue1' - - '== APP == get updated config key = mySubscribeKey1, value = mySubscribeValue2' - - '== APP == get updated config key = mySubscribeKey2, value = mySubscribeValue2' - - '== APP == get updated config key = mySubscribeKey3, value = mySubscribeValue2' - - '== APP == get updated config key = mySubscribeKey1, value = mySubscribeValue3' - - '== APP == get updated config key = mySubscribeKey2, value = mySubscribeValue3' - - '== APP == get updated config key = mySubscribeKey3, value = mySubscribeValue3' + - '== APP == got config key = mykey, value = myConfigValue' + - '== APP == got config key = mySubscribeKey1, value = mySubscribeValue1' + - '== APP == got config key = mySubscribeKey2, value = mySubscribeValue1' + - '== APP == got config key = mySubscribeKey3, value = mySubscribeValue1' + - '== APP == got config key = mySubscribeKey1, value = mySubscribeValue2' + - '== APP == got config key = mySubscribeKey2, value = mySubscribeValue2' + - '== APP == got config key = mySubscribeKey3, value = mySubscribeValue2' + - '== APP == got config key = mySubscribeKey1, value = mySubscribeValue3' + - '== APP == got config key = mySubscribeKey2, value = mySubscribeValue3' + - '== APP == got config key = mySubscribeKey3, value = mySubscribeValue3' - '== APP == dapr configuration subscribe finished.' background: false sleep: 40 @@ -47,17 +47,25 @@ dapr run --app-id configuration-api\ The subscription event order may out of order. ``` -get config = myConfigValue -get updated config key = mySubscribeKey1, value = mySubscribeValue1 -get updated config key = mySubscribeKey2, value = mySubscribeValue1 -get updated config key = mySubscribeKey3, value = mySubscribeValue1 -get updated config key = mySubscribeKey1, value = mySubscribeValue2 -get updated config key = mySubscribeKey2, value = mySubscribeValue2 -get updated config key = mySubscribeKey3, value = mySubscribeValue2 -get updated config key = mySubscribeKey1, value = mySubscribeValue3 -get updated config key = mySubscribeKey2, value = mySubscribeValue3 -get updated config key = mySubscribeKey3, value = mySubscribeValue3 +got config key = mykey, value = myConfigValue + +got config key = mySubscribeKey1, value = mySubscribeValue1 +got config key = mySubscribeKey2, value = mySubscribeValue1 +got config key = mySubscribeKey3, value = mySubscribeValue1 +got config key = mySubscribeKey1, value = mySubscribeValue2 +got config key = mySubscribeKey2, value = mySubscribeValue2 +got config key = mySubscribeKey3, value = mySubscribeValue2 +got config key = mySubscribeKey1, value = mySubscribeValue3 +got config key = mySubscribeKey2, value = mySubscribeValue3 +got config key = mySubscribeKey3, value = mySubscribeValue3 +got config key = mySubscribeKey1, value = mySubscribeValue4 +got config key = mySubscribeKey2, value = mySubscribeValue4 +got config key = mySubscribeKey3, value = mySubscribeValue4 +got config key = mySubscribeKey1, value = mySubscribeValue5 +got config key = mySubscribeKey2, value = mySubscribeValue5 +got config key = mySubscribeKey3, value = mySubscribeValue5 dapr configuration subscribe finished. +dapr configuration unsubscribed ✅ Exited App successfully ``` diff --git a/examples/configuration/main.go b/examples/configuration/main.go index 66a4cb41..f3b5ad6f 100644 --- a/examples/configuration/main.go +++ b/examples/configuration/main.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "strconv" + "sync" "time" dapr "github.com/dapr/go-sdk/client" @@ -11,7 +12,7 @@ import ( "google.golang.org/grpc/metadata" ) -func init() { +func addItems(wg *sync.WaitGroup) { opts := &redis.Options{ Addr: "127.0.0.1:6379", } @@ -19,10 +20,10 @@ func init() { // set config value client.Set(context.Background(), "mykey", "myConfigValue", -1) ticker := time.NewTicker(time.Second) + wg.Add(3 * 5) go func() { for i := 0; i < 5; i++ { <-ticker.C - // update config value client.Set(context.Background(), "mySubscribeKey1", "mySubscribeValue"+strconv.Itoa(i+1), -1) client.Set(context.Background(), "mySubscribeKey2", "mySubscribeValue"+strconv.Itoa(i+1), -1) client.Set(context.Background(), "mySubscribeKey3", "mySubscribeValue"+strconv.Itoa(i+1), -1) @@ -32,6 +33,8 @@ func init() { } func main() { + var wg sync.WaitGroup + addItems(&wg) ctx := context.Background() client, err := dapr.NewClient() if err != nil { @@ -42,25 +45,27 @@ func main() { if err != nil { panic(err) } - fmt.Printf("get config = %s\n", (*items).Value) + fmt.Printf("got config key = mykey, value = %s \n", (*items).Value) ctx, f := context.WithTimeout(ctx, 60*time.Second) md := metadata.Pairs("dapr-app-id", "configuration-api") ctx = metadata.NewOutgoingContext(ctx, md) defer f() subscribeID, err := client.SubscribeConfigurationItems(ctx, "example-config", []string{"mySubscribeKey1", "mySubscribeKey2", "mySubscribeKey3"}, func(id string, items map[string]*dapr.ConfigurationItem) { + wg.Done() for k, v := range items { - fmt.Printf("get updated config key = %s, value = %s \n", k, v.Value) + fmt.Printf("got config key = %s, value = %s \n", k, v.Value) } }) if err != nil { panic(err) } - time.Sleep(time.Second*3 + time.Millisecond*500) + wg.Wait() // dapr configuration unsubscribe called. if err := client.UnsubscribeConfigurationItems(ctx, "example-config", subscribeID); err != nil { panic(err) } - time.Sleep(time.Second * 5) + fmt.Println("dapr configuration unsubscribed") + time.Sleep(time.Second) }