zoukankan      html  css  js  c++  java
  • 使用VS code 创建 Azure Functions,从blob触发,解析,发送至Service Bus

    更多内容,关注公众号:来学云计算

    场景:

    某设备定时于每天23:00左右将一天的运行日志.devicelogtxt上传到Azure Blob,期待Blob文件上传后, 自动通过Azure Functions 解析文件并将文件内容写入到服务总线Service Bus的队列中。

    上传的文件格式为:

    步骤:

    1. 下载并安装VS Code;

    2. 下载VS Code 扩展:Azure Account/Funxtions/Nuget;

    3. 将VS Code Azure 调整成Azure-China;

    4. 在VS Code上登录Azure China账号;

    5. 下载安装Azure Functions Core Tools以便进行本地调试;

    6. 在Azrue Portal上准备Functions/Blob/Service Bus 环境;

    7.  在VS Code创建Functions;

    8. 在本地调试Functions;

    9. 使用VS Code直接发布Functions;

    本实战的完整视频:

      https://v.qq.com/x/page/m3037qoso1i.html

    需要安装的三个扩展:

    Azure Account

    Azure Functions

    NuGet Package Manager

    在VS Code中创建Functions步骤:

    选择一个文件夹

    选择C#语言

    选择一个Blob触发器

    Function 名称,可以保持默认

    命名空间名称,可以保持默认

    创建新的本地配置文件

    选择创建好的storage 账户

    填写要监控的容器

    选择 存储账户

    在当前窗口打开项目

    本案例中的示例代码:

    using System;
    using System.IO;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Host;
    using Microsoft.Extensions.Logging;
    using Microsoft.Azure.ServiceBus;
    using System.Text;
    using Newtonsoft.Json;
    ​
    namespace Company.Function
    {
        public static class BlobTriggerCSharp
        {
            [FunctionName("BlobTriggerCSharp")]
            public static void Run([BlobTrigger("samples-workitems/{name}", Connection = "beifustoratgetest_STORAGE")]Stream myBlob, string name, ILogger log)
            {
                log.LogInformation($"C# Blob trigger function Processed blob
     Name:{name} 
     Size: {myBlob.Length} Bytes");
    ​
                StreamReader reader = new StreamReader(myBlob);
                string msg=string.Empty;
                while(!string.IsNullOrEmpty(msg=reader.ReadLine()))
                {
                   
                    SendMsgToSbQueueAsync(new Msg(){dateTime=DateTime.Now,Msgstr=msg,DeviceId="001"});
                    log.LogInformation($"oldContent:{msg}");
                }
    ​
    ​
            }
    ​
    ​
    ​
            public static async void SendMsgToSbQueueAsync(Msg msg)
            {
                        string ServiceBusConnectionString = "Endpoint=sb://seanyutest.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=rnVwTNyXWRDhi1scJ2ukW7al/5q0Y8sNY2H01dqSl3k=";
                        string QueueName = "test";
                        IQueueClient queueClient = new QueueClient(ServiceBusConnectionString, QueueName);
    ​
    ​
                        string messageBody = JsonConvert.SerializeObject(msg);
                        var message = new Message(Encoding.UTF8.GetBytes(messageBody));                   
                        await   queueClient.SendAsync(message);
            }
    ​
    ​
            public class Msg
            {
                public DateTime dateTime{get;set;}
                public string Msgstr{get;set;}
    ​
                public string DeviceId{get;set;}
            }
        }
    }
     

    从本地发布到Azure

    Ctrl+shift+P

    将链接字符串配置到云端的Functions:

    其中名称要与local.settings.json中保持一致:

    微软Azure IoT, AI,Cloud 产品实战视频,请关注作者公众号:

     

  • 相关阅读:
    第4章:kubectl命令行管理工具
    Docker_CICD笔记
    Harbor镜像仓库
    centos7 安装最新的 wiki confluence
    Centos7.5使用SSH密钥登录
    一篇文章带你搞懂 etcd 3.5 的核心特性
    腾讯云边缘容器 TKE Edge 国内首批通过边缘容器技术能力认证
    揭秘有状态服务上 Kubernetes 的核心技术
    腾讯云云原生混合云-TKE发行版
    kubernetes 降本增效标准指南|理解弹性,应用弹性
  • 原文地址:https://www.cnblogs.com/shuzhenyu/p/12065828.html
Copyright © 2011-2022 走看看