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

上传的文件格式为:

步骤:
- 下载并安装VS Code;
- 下载VS Code 扩展:Azure Account/Funxtions/Nuget;
- 将VS Code Azure 调整成Azure-China;
- 在VS Code上登录Azure China账号;
- 下载安装Azure Functions Core Tools以便进行本地调试;
- 在Azrue Portal上准备Functions/Blob/Service Bus 环境;
- 在VS Code创建Functions;
- 在本地调试Functions;
- 使用VS Code直接发布Functions;
本实战的完整视频:
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\n Name:{name} \n 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中保持一致:





