Dapr专题之07绑定

Dapr 绑定



提示:以下是本篇文章正文内容,下面案例可供参考

绑定简介以及优势

绑定就是处理外部事件或调用外部接口的功能

dapr中的绑定能给我们带来如下好处:

  • 避免连接到消息系统 ( 如队列和消息总线 ) 并进行轮询的复杂性
  • 聚焦于业务逻辑,而不是如何与系统交互
  • 使代码不受 SDK 或外部库的强耦合
  • 处理重试和故障恢复

dapr中的绑定分为三种

  • 输入绑定,处理外部事件
    在这里插入图片描述
  • 输出绑定,触发外部事件
    在这里插入图片描述
  • Cron绑定,定时触发内部程序

输出绑定

  1. 新增rabbitmq-input-binding.yaml,写入以下代码:
     apiVersion: dapr.io/v1alpha1
     kind: Component
     metadata:
       name: api/RabbitBinding
     spec:
       type: bindings.rabbitmq
       version: v1
       metadata:
       - name: queueName
         value: queue-for-input-binding
       - name: host
         value: amqp://guest:guest@192.168.11.12:5672
    
  2. 新建RabbitBindingController,写入以下代码:
     private readonly ILogger<RabbitBindingController> _logger;
     public RabbitBindingController(ILogger<RabbitBindingController> logger)
     {
         _logger = logger;
     }
    
       //绑定接收接口
     [HttpPost]
     public ActionResult Post()
     {
         Stream stream = Request.Body;
         byte[] buffer = new byte[Request.ContentLength!.Value];
         stream.Position = 0L;
         stream.ReadAsync(buffer, 0, buffer.Length);
         string content = Encoding.UTF8.GetString(buffer);
         _logger.LogInformation(".............binding............." + content);
         return Ok();
     }
    
  3. 启动测试
    • 启动FrontEnd
        dapr run --dapr-http-port 3501 --app-port 5001  --app-id frontend dotnet  .\FrontEnd\bin\Debug\net6.0\FrontEnd.dll
      
  4. 打开RabbitMQ Management,找到queue-for-input-binding,发布一条消息

在这里插入图片描述

  1. 可以看到控制台已经打印出上一步发送的消息
    在这里插入图片描述

输出绑定

  1. 新增rabbitmq-output-binding.yaml,写入以下代码:
     apiVersion: dapr.io/v1alpha1
     kind: Component
     metadata:
       name: api/RabbitBinding/output
     spec:
       type: bindings.rabbitmq
       version: v1
       metadata:
       - name: queueName
         value: queue-for-output-binding
       - name: host
         value: amqp://guest:guest@192.168.11.12:5672
    
  2. RabbitBindingController中写入以下代码:
    // 新增触发输出绑定接口
     [HttpGet("output")]
     public async Task<ActionResult> OutputAsync([FromServices] DaprClient daprClient)
     {
         await daprClient.InvokeBindingAsync("api/RabbitBinding/output", "create", "111111111");
         return Ok();
     }
    
  3. 启动测试
    • 启动FrontEnd
        dapr run --dapr-http-port 3501 --app-port 5001  --app-id frontend dotnet  .\FrontEnd\bin\Debug\net6.0\FrontEnd.dll
      
  4. 打开RabbitMQ Management,找到queue-for-output-binding,可以看到已经接收到了一条消息
    在这里插入图片描述

Cron绑定

  1. 新增rabbitmq-cron-binding.yaml,写入以下代码:
     apiVersion: dapr.io/v1alpha1
     kind: Component
     metadata:
       name: api/RabbitBinding/cron
     spec:
       type: bindings.cron
       version: v1
       metadata:
       - name: schedule
         value: "@every 5s"  # 每5s执行一次
    
  2. RabbitBindingController中写入以下代码:
     //测试cron绑定
     [HttpPost("cron")]
     public ActionResult Cron()
     {
         _logger.LogInformation(".............corn binding.............");
         return Ok();
     }
    
  3. 启动测试
    • 启动FrontEnd
        dapr run --dapr-http-port 3501 --app-port 5001  --app-id frontend dotnet  .\FrontEnd\bin\Debug\net6.0\FrontEnd.dll
      
  4. 打开控制台可以看到每隔5秒钟就执行了一次
    在这里插入图片描述

总结

以上就是这次要给大家分享的内容,本文介绍了Dapr中关于绑定的相关内容,下次将给大家介绍Dapr中的Secrets,欢迎各位朋友点赞收藏,同时希望本文能够给大家带来一丝帮助与启发。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值