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

场景:

某设备定时于每天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\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=""});
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 产品实战视频,请关注作者公众号:

最新文章

  1. Android EditText中插入话题模块的删除处理方法
  2. Android Listview
  3. 时间和日期控件(Calendar1)
  4. TableView使用CATransform3D特效动画
  5. Apparmor——Linux内核中的强制访问控制系统
  6. 模糊查询的like '%$name$%'的sql注入避免
  7. WinServer 之 Windows Server 2008 R2安装IIS
  8. Mysql 冷备份批处理
  9. mysql net连接读取结果为乱码 Incorrect string value
  10. DevExpress GridControl GridView 导出到 Excel 类
  11. VMware下ubuntu与Windows实现文件共享的方法
  12. 关于position
  13. centos系统查看系统版本、内核版本、系统位数、cpu个数、核心数、线程数
  14. linux mysql 定时备份
  15. pc端字体大小自适应几种方法
  16. python unnitest 经验总结
  17. java collection和Iterator
  18. 解决 Python shell 中 Delete/Backspace 键乱码问题
  19. POJ1258:Agri-Net(最小生成树模板题)
  20. Why my setting does not work?

热门文章

  1. 12、pytest -- 缓存:记录执行的状态
  2. 从BWM生产学习工厂模式
  3. Java基础面试题及答案(五)
  4. linux下svn服务器端的操作
  5. Java数组与C/C++数组的区别
  6. 堡垒机WebSSH进阶之实时监控和强制下线
  7. 企业日常巡检shell脚本
  8. [转载]C++中四种强制类型转换方式
  9. markdown语法之字体、字号、颜色以及背景色
  10. linux google protobuf