Я лазурный новичок. Моя установка выглядит следующим образом. У меня есть Центр Интернета вещей, Центр событий, функция Azure. Идея состоит в том, чтобы отправлять сообщения в концентратор Интернета вещей, направлять их в концентратор событий на основе определенного типа сообщения, обрабатывать эти события с помощью функции.

Я создал образец консольного приложения для отправки сообщений с моего компьютера в Центр Интернета вещей. Создал функцию Azure в Visual Studio (.Net Core) и опубликовал ее в приложении функции Azure.

Теперь, когда я запускаю проект консольного приложения и проекты приложения-функции вместе, я вижу сообщения, получаемые в центре Интернета вещей (глядя на лазурный портал), а также срабатывающую функцию и получение отправленного мной сообщения (путем просмотра на консоли, которая появляется на моем компьютере, с приложением-функцией).

Моя проблема в том, что когда я затем проверяю лазурный портал, я вижу, что счетчик выполнения функции равен 0, хотя я вижу, что функция выбирает события, когда я проверяю локально. Есть идеи, почему это может быть так?

Событие получено функцией

ноль казней показано на лазурном портале

Код функции основан на шаблоне, который поставляется с Visual Studio.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.EventHubs;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

namespace FunctionApp2
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task Run([EventHubTrigger("azureiotquickstarteventhub", Connection = "AzureEventHubConnectionString")] EventData[] events, ILogger log)
        {
            var exceptions = new List<Exception>();

            foreach (EventData eventData in events)
            {
                try
                {
                    string messageBody = Encoding.UTF8.GetString(eventData.Body.Array, eventData.Body.Offset, eventData.Body.Count);

                    // Replace these two lines with your processing logic.
                    log.LogInformation($"C# Event Hub trigger function processed a message: {messageBody}");
                    await Task.Yield();
                }
                catch (Exception e)
                {
                    // We need to keep processing the rest of the batch - capture this exception and continue.
                    // Also, consider capturing details of the message that failed processing so it can be processed again later.
                    exceptions.Add(e);
                }
            }

            // Once processing of the batch is complete, if any messages in the batch failed processing throw an exception so that there is a record of the failure.

            if (exceptions.Count > 1)
                throw new AggregateException(exceptions);

            if (exceptions.Count == 1)
                throw exceptions.Single();
        }
    }
}
2
Miraj Mohajireen 30 Сен 2020 в 17:49

1 ответ

Лучший ответ

Если он работает нормально на локальном компьютере, но не выполняется на портале Azure, проверьте, указан ли AzureEventHubConnectionString в портале Azure -> конфигурация приложения-функции. Шаги, как показано ниже:

Навигация на портал Azure -> перейдите в приложение-функцию -> Конфигурация -> Параметры приложения, на этой странице проверьте, указано ли «AzureEventHubConnectionString» и оно должно иметь правильное значение. Снимок экрана, как показано ниже:

enter image description here

Кстати, вам лучше включить Application Insights для своего приложения-функции, чтобы улучшить работу монитора. Вы можете использовать снимок экрана ниже, чтобы включить Application Insights:

1. На портале Azure щелкните экземпляр приложения-функции, например EventhubTrigger1:

enter image description here

2. Затем нажмите Monitor -> нажмите кнопку Configure, чтобы включить анализ приложений:

enter image description here

После этого, когда я выполняю функцию, я вижу ее выполнение на лазурном портале:

enter image description here

0
Ivan Yang 1 Окт 2020 в 02:27