学海无涯

导航

统计

Dapr 状态管理

将 Dapr.Client NuGet 包添加到应用程序:

1
Dapr.Client

  打开 Program.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using Dapr.Client;
 
const string storeName = "statestore";
const string key = "counter";
 
var daprClient = new DaprClientBuilder().Build();
var counter = await daprClient.GetStateAsync<int>(storeName, key);
 
while (true)
{
    Console.WriteLine($"Counter = {counter++}");
 
    await daprClient.SaveStateAsync(storeName, key, counter);
    await Task.Delay(1000);
}

  

重要:必须要注意的是,使用状态管理构建块时始终传递显式 app-id 参数。 对于每个键/值对,构建块将应用程序 ID 值用作其状态键的前缀。 如果应用程序 ID 发生了更改,则将无法再访问之前存储的状态。

打开项目所在的目录,运行

1
dapr run --app-id DaprCounter dotnet run

后写入优先”策略

1
var weatherForecast = await daprClient.GetStateAsync<WeatherForecast>("statestore", "AMS");

 

1
daprClient.SaveStateAsync("statestore", "AMS", weatherForecast);

乐观并发控制 (OCC) 与“先写入优先”策略一起使用

请首先使用 方法检索当前的 ETag。 然后,写入更新的值,并使用 DaprClient.TrySaveStateAsync 方法传递检索到的 ETag。

1
2
3
4
5
var (weatherForecast, etag) = await daprClient.GetStateAndETagAsync<WeatherForecast>("statestore", city);
 
// ... make some changes to the retrieved weather forecast
 
var result = await daprClient.TrySaveStateAsync("statestore", city, weatherForecast, etag);

  

检索数据后,数据(以及关联的 ETag)在状态存储中被更改时,DaprClient.TrySaveStateAsync 方法将失败。 该方法返回一个布尔值,以指示调用是否成功。 处理失败的一种策略是,仅需从状态存储重新加载更新后的数据,再次进行更改,然后重新提交更新。

如果始终希望写入成功,而不考虑对数据的其他更改,请使用“后写入优先”策略。

 

 

posted on   宁静致远.  阅读(98)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示