【问题标题】:Azure Function For Monitoring Edge Module Health用于监视边缘模块运行状况的 Azure 函数
【发布时间】:2018-09-03 05:05:57
【问题描述】:

我想创建一个 azure 函数来监控 iothub 中边缘模块的运行状况。通过检索模块的双属性,我将能够做到这一点。 事实上,我有一个 C# 代码,它给出了想要的结果。但是我对 azure 函数的概念非常陌生,并且我被困在如何使用它们上。 以下是我用来检索模块孪生属性的代码:

public class TwinSample
{
    private ModuleClient _moduleClient;

    public TwinSample(ModuleClient moduleClient)
    {
        _moduleClient = moduleClient ?? throw new ArgumentNullException(nameof(moduleClient));
    }

    public async Task<string> RunSampleAsync()
    {

        Console.WriteLine("Retrieving twin...");
        Twin twin = await _moduleClient.GetTwinAsync().ConfigureAwait(false);

        Console.WriteLine("\tInitial twin value received:");

        Console.WriteLine($"\t{twin.ToJson()}");
        return twin.ToJson();
    }


}

 public static void Main(string[] args)
    {
        if (string.IsNullOrEmpty(s_moduleConnectionString) && args.Length > 0)
        {
            s_moduleConnectionString = args[0];
        }

            ModuleClient moduleClient = ModuleClient.CreateFromConnectionString(s_moduleConnectionString, s_transportType);

            var sample = new TwinSample(moduleClient);
            Sample.RunSampleAsync().GetAwaiter().GetResult();
            Console.ReadLine();


    }

谁能解释一下如何使相同的功能在 azure 函数中工作?

谢谢。

【问题讨论】:

    标签: azure-active-directory azure-functions azure-application-insights health-monitoring azure-functions-core-tools


    【解决方案1】:

    这取决于您要使用哪个触发器(运行函数的条件)。下面是一个基于 Timer 的函数示例:

    public static class MyApp 
    {
        [FunctionName("TimerTriggerCSharp")]
        public static async Task Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer)
        {
            var moduleConnectionString = Environment.GetEnvironmentVariable("ModuleConnectionString", EnvironmentVariableTarget.Process);
            var transportType = Environment.GetEnvironmentVariable("TransportType", EnvironmentVariableTarget.Process);
    
            ModuleClient moduleClient = ModuleClient.CreateFromConnectionString(moduleConnectionString, transportType);
    
            var sample = new TwinSample(moduleClient);
            await sample.RunSampleAsync();
        }
    }
    

    TwinSample 的定义可以从您的原始代码中重复使用。

    您需要在 Azure Functions 的应用程序设置中设置 ModuleConnectionStringTransportType 的值(例如通过门户)。

    附:欢迎来到堆栈溢出。对于本网站的标准,您的问题有点宽泛,因为它只是询问“我该怎么做”,而不是提供您已经尝试过的代码/方法。下一次,请阅读 Azure Functions 的入门示例,并在提问之前尝试将您的代码应用到这些示例中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多