面向.NET开发人员的Dapr——目录

今天上午的主题就是Dapr,别错过了哦。

本系列部分翻译自 .NET团队编写的Dapr for .NET Developers | Microsoft Docs(https://docs.microsoft.com/en-us/dotnet/architecture/dapr-for-net-developers/),大部内容复制于面向 .NET 开发人员的 Dapr | Microsoft Docs(https://docs.microsoft.com/zh-cn/dotnet/architecture/dapr-for-net-developers/)。

Dapr for .NET Developers 的示例项目 eshopondapr  https://github.com/dotnet-architecture/eShopOnDapr 成为我们学习.NET 微服务的参考代码, eshoponDapr 是 eshoponcontainer 的dapr 版本,从这本书和这个项目代码中,我们可以更加容易的拥抱微服务。

目录:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Dapr pubsub 中,可通过在订阅函数中添加幂等性判断来解决重复消费的问题。以下是一个基于 .NET 6 的幂等性实现示例: ```csharp using Dapr.Client; using Dapr.Client.Autogen.Grpc.v1; using Dapr.Client.Autogen.Protos; using Google.Protobuf; using Grpc.Core; using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; namespace DaprPubSubDemo.Controllers { [ApiController] [Route("[controller]")] public class DaprPubSubController : ControllerBase { private readonly DaprClient _daprClient; public DaprPubSubController(DaprClient daprClient) { _daprClient = daprClient; } [HttpPost("subscribe")] public async Task<ActionResult> Subscribe([FromBody] CloudEvent cloudEvent) { // 获取消息 ID string messageId = cloudEvent.Id; // 判断消息是否已处理过 if (await _daprClient.GetStateEntryAsync<bool>("message", messageId) == false) { // 标记消息已处理 await _daprClient.SaveStateAsync("message", messageId, true); // 处理消息 // TODO: 在此处添加具体的消息处理逻辑 } return Ok(); } } } ``` 上述代码中,我们使用 Dapr 的状态管理功能来实现幂等性判断。在订阅函数中,首先获取消息的 ID,然后通过调用 `GetStateEntryAsync` 方法获取该消息的处理状态。如果消息尚未处理,则标记消息已处理,并执行具体的消息处理逻辑;否则,直接返回结果。 需要注意的是,上述代码中的状态存储使用的是 Dapr 默认的状态存储,可以根据实际需求进行修改。同时,还需要注意保证状态存储的可靠性和一致性,以确保幂等性判断的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值