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

场景:

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

使用VS code 创建 Azure Functions,从blob触发,解析,发送至Service Bus的更多相关文章

  1. 技术博客:Azure Functions + Azure Storage 开发

    Azure GitHub wiki 同步发布 传送门 Azure Functions 通过 Functions(一个事件驱动型无服务器计算平台,还可以解决复杂的业务流程问题)更加高效地进行开发.在本地 ...

  2. 使用 Visual Studio 开发、测试和部署 Azure Functions(一)开发

    1,什么是Azure functions Azure Functions 是 Microsoft Azure 提供的完全托管的 PaaS 服务,用于实现无服务器体系结构. Azure Function ...

  3. 利用Azure Functions和k8s构建Serverless计算平台

    题记:昨晚在一个技术社区直播分享了"利用Azure Functions和k8s构建Serverless计算平台"这一话题.整个分享分为4个部分:Serverless概念的介绍.Az ...

  4. 【Azure 应用服务】由 Azure Functions runtime is unreachable 的错误消息推导出 ASYNC(异步)和 SYNC(同步)混用而引起ThreadPool耗尽问题

    问题描述 在Azure Function Portal上显示: Azure Functions runtime is unreachable,引起的结果是Function App目前不工作,但是此前一 ...

  5. .NET 5 支持 Azure Functions OpenAPI 扩展啦

    今年5月,在 Build大会上,Azure FunctionsOpenAPI的功能支持(预览版)正式宣布. 当时,它最高支持 v3 运行时--.NET Core 3.1 版本. 最近,它发布了 .NE ...

  6. 使用 Visual Studio 开发、测试和部署 Azure Functions(二)测试,部署

    1,引言 上一篇介绍了使用使用 Visual Studio 开发 "Azure Functions" 函数,此篇介绍 “Azure Functions” 的测试以及直接从 Vist ...

  7. Windows Azure Service Bus (1) 基础

    <Windows Azure Platform 系列文章目录> 我们在基于Windows Azure进行云端开发的时候,云端的软件通常都需要与其他软件进行交互.这些其他软件可能包括其他In ...

  8. Windows Azure Service Bus (2) 队列(Queue)入门

    <Windows Azure Platform 系列文章目录> Service Bus 队列(Queue) Service Bus的Queue非常适合分布式应用.当使用Service Bu ...

  9. 【服务总线 Azure Service Bus】ServiceBus 队列中死信(DLQ - Dead Letter Queue)问题

    Azure Service Bus 死信队列产生的原因 服务总线中有几个活动会导致从消息引擎本身将消息推送到 DLQ. 如 超过 MaxDeliveryCount 超过 TimeToLive 处理订阅 ...

随机推荐

  1. 使用node.js开发一个生成逐帧动画小工具

    在实际工作中我们已经下下来不下于一万个npm包了,像我们熟悉的 vue-cli,react-native-cli 等,只需要输入简单的命令 vue init webpack project,即可快速帮 ...

  2. 运用python实现冒泡排序算法

    冒泡排序,一个经典的排序算法,因在算法运行中,极值会像水底的气泡一样逐渐冒出来,因此而得名. 冒泡排序的过程是比较两个相邻元素的大小,然后根据大小交换位置,这样从列表左端开始冒泡,最后最大值会依次从右 ...

  3. python 正确字符串处理(自己踩过的坑)

    不管是谁,只要处理过由用户提交的调查数据,就能明白这种乱七八糟的数据是怎么一回事.为了得到一组能用于分析工作的格式统一的字符串,需要做很多事情:去除空白符.删除各种标点符号.正确的大写格式等.做法之一 ...

  4. 《手把手教你》系列练习篇之3-python+ selenium自动化测试(详细教程)

    1.  简介 前面介绍了,XPath, id , class , link text, partial link text, tag name, name 七大元素定位方法,本文介绍webdriver ...

  5. Java多线程面试题:线程锁+线程池+线程同步等

    1.并发编程三要素? 1)原子性 原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行. 2)可见性 可见性指多个线程操作一个共享变量时,其中一个线程对变量 ...

  6. TCP/IP头部详解

    在网上找了很多有关tcp/ip头部解析的资料,都是类似于下面的结构 抽象出图文是这种结构,但是在底层中数据到底是怎么传输的呢?没有答案,在深入学习之后,总结出数据传输的方式 IP数据包头部格式: 上面 ...

  7. python排序算法之一:冒泡排序(及其优化)

    相信冒泡排序已经被大家所熟知,今天看了一篇文章,大致是说在面试时end在了冒泡排序上,主要原因是不能给出冒泡排序的优化. 所以,今天就写一下python的冒泡排序算法,以及给出一个相应的优化.OK,前 ...

  8. libgcc_s.so.1 cannot open shared object file No such file or directory

    libgcc_s.so.1: cannot open shared object file: No such file or directory解决办法 背景 使用WAR包安装jenkins,在tom ...

  9. 前后端vue和django配置

    django pip源更换 虚拟环境配置 目录和日志配置 数据库配置 用户模块自定义 异常,响应配置 xadmin vue vue基础配置 vue高级配置 vue this问题和样式配置

  10. 对Java单例模式 volatile关键字作用的理解

    单例模式是程序设计中经常用到的,简单便捷的设计模式,也是很多程序猿对设计模式入门的第一节课.其中最经典的一种写法是: class Singleton { private volatile static ...