使用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\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中保持一致:

原文地址:https://www.cnblogs.com/shuzhenyu/p/12065828.html

时间: 2024-10-07 08:36:45

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

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

<Windows Azure Platform 系列文章目录> Service Bus 队列(Queue) Service Bus的Queue非常适合分布式应用.当使用Service Bus Queue的时候,分布式应用的组件不直接进行通信. - 前端应用(发送方)创建一个Azure Service Bus Queue,插入需要处理的消息主体,然后继续处理前端业务逻辑 - 后端消息处理(接收方)从Service Bus Queue中取出消息,并进行处理 - 发送方不需要等待接收方的答复,以便在

Windows Azure Service Bus (1) 基础

<Windows Azure Platform 系列文章目录> 我们在基于Windows Azure进行云端开发的时候,云端的软件通常都需要与其他软件进行交互.这些其他软件可能包括其他Internet上的软件,或者内网的软件. 对于内网的软件来说,Azure提供Site-to-Site(S2S) VPN 和Point-to-Site(P2S) VPN的方式来打通Azure和内网应用程序之间的VPN连接.但是如果内网的应用程序使用了网络地址转换(NAT),S2S和P2S是无法支持在NAT背后的V

使用Azure Functions 在web 应用中启用自动更新(一)分析基于轮询的 Web 应用的限制

1,引言 上一篇介绍了使用使用 Visual Studio 开发 "Azure Functions" 函数,此篇介绍 “Azure Functions” 的测试以及直接从 Vistual Studio 在 Azure 上的部署 ”Azure Functions“应用. 接着上一篇,本篇介绍在 “Azure Functions” 中实现一个函数,该函数仅在 Azure Cosmos DB 中的数据发生变化时运行. 在基于计时器的轮询原型中,无论底层数据是否发生了更改,客户端应用程序都会联

通过流量管理器和 Azure Functions(作为代理)为全球用户提供最靠近的认知服务(或自定义API)

本实战是一个中等复杂度的综合性实战,涉及到的内容有TrafficManager,AzureFunctions,域名/域名解析等几个内容. 本案例基础介绍: https://www.bilibili.com/video/av86424146/ 本案例实战: https://www.bilibili.com/video/av86424146/ Azure上认知服务(人脸,语音,翻译等)很多对外提供API的访问方式,如果我需要做一个全球型的人脸识别或者翻译的项目,则可能最终会在Global多个区域部署

Azure PowerShell批量创建Azure虚拟机

在我们工作过程当中,可能会需要创建多台相同配置的虚拟机.我们是不是只能通过Portal 页面一台台创建呢?答案是否定的,我们可以通过Azure PowerShell脚本来批量创建虚拟机.接下来我将介绍通过Powershell来批量创建Azure虚拟机. 以下分割线内的内容是要powershell脚本用来批量创建虚拟机的内容 ---------------------------------------分割线---------------------------------------------

Azure PowerShell (11) 使用自定义虚拟机镜像模板,创建Azure虚拟机并绑定公网IP(VIP)和内网IP(DIP)

<Windows Azure Platform 系列文章目录> 前提要求: 1.假设笔者捕获一个Azure虚拟机模板,命名为leistorage 关于Azure虚拟机模板,请参考下图: 2.在Azure PowerShell,执行以下内容: #选择当前订阅 add-azureaccount -environment azurechinacloud #选择当前存储账号,步骤略 Set-AzureSubscription -SubscriptionName '[SubscriptionName]'

在Azure China用自定义镜像创建Azure VM Scale Set

在Azure China用自定义镜像创建Azure VM Scale Set 在此感谢世纪互联的工程师Johnny Lee和Lan,你们给了我很大的帮助.因为Azure China的官网没有给出完整的步骤,所以我在这里把完整的步骤总结一下,希望对大家有所帮助. Azure Global有一篇介绍如何用自定义镜像创建Azure VM Scale Set的文章.因为里面用到的"type": "Microsoft.Compute/images" 部分,我自己没在Azure

创建Azure磁盘快照

快照是 VHD 的完整只读副本.创建 OS 或数据磁盘 VHD 的快照作为备份,或用于解决 VM 问题.通过本文我们来了解下如何使用Azure门户创建Azure磁盘快照 登录到 Azure 门户.首先在左上角单击"创建资源"并搜索"快照" snapshot.如下图所示 点击创建 输入快照的"名称".选择现有的资源组,或键入新资源组的名称.选择 Azure 数据中心的位置.对于源磁盘,选择要获取其快照的托管磁盘.选择用于存储快照的"帐户类

创建 Azure Cosmos DB 帐户、数据库和集合

运行所示的命令,以创建 Azure Cosmos DB 帐户.数据库和集合: export NAME="jacksun" export RESOURCE_GROUP="92116f19-67b4-4078-8e64-b488b5c5cede" export LOCATION="EastUS" export DB_NAME="Products" az cosmosdb create --name $NAME --kind Glo