我想创建一个azure函数来监视iothub中我的边缘模块的运行状况。通过检索模块的孪生属性,我将能够做到这一点。 实际上,我有一个C#代码,可以提供所需的结果。但是我对天蓝色函数的概念非常陌生,并且我对如何使用它们感到困惑。 以下是我用来检索模块twin属性的代码:
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函数中使相同的功能起作用吗?
谢谢。
答案 0 :(得分:1)
这取决于要使用的触发器(运行函数的条件)。这是基于计时器的功能的示例:
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的应用程序设置中设置ModuleConnectionString
和TransportType
的值(例如,通过门户)。
P.S。欢迎使用堆栈溢出。对于本网站的标准,您的问题有点笼统,因为它只是询问“我该怎么做”,而不是提供您已经尝试过的代码/方法。下次,请阅读Azure Functions入门示例,并在提出问题之前尝试将代码应用于它们。