Функция Azure для мониторинга работоспособности пограничного модуля - PullRequest
0 голосов
/ 03 сентября 2018

Я хочу создать лазурную функцию для контроля состояния моих пограничных модулей в iothub. Получив двойные свойства модуля, я смогу это сделать. Infact у меня есть код C #, который дает желаемый результат. Но я очень плохо знаком с концепцией лазурных функций и застрял в том, как с ними работать. Ниже приведен код, который я использую для извлечения двойниковых свойств модуля:

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?

Спасибо.

1 Ответ

0 голосов
/ 03 сентября 2018

Это зависит от того, какой триггер вы хотите использовать (условие для запуска вашей функции). Вот пример для функции на основе таймера:

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 может быть повторно использовано из вашего исходного кода.

Вам потребуется установить значения для ModuleConnectionString и TransportType в настройках приложения функций Azure (например, через портал).

P.S. Добро пожаловать в стек переполнения. Ваш вопрос немного широк для стандартов этого сайта, потому что он просто спрашивает «как мне это сделать» вместо того, чтобы дать код / ​​подход, который вы уже попробовали. В следующий раз, пожалуйста, ознакомьтесь с примерами Приступая к работе с функциями Azure и попробуйте применить к ним свой код, прежде чем задать вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...