Функция Azure EventHubTrigger, выполняющая несколько экземпляров - PullRequest
0 голосов
/ 23 ноября 2018

У меня проблема с запуском нескольких экземпляров функций Azure, которые должны предназначаться для одной и той же конечной точки IoTHub (по умолчанию), но для другой группы потребителей (необходимые группы создаются на портале).В основном я хочу обработать одно и то же сообщение дважды, но с разными функциями.Итак, я написал два функциональных проекта с одинаковыми настройками (одно и то же хранилище, одна и та же конечная точка и конфигурация) и нацелен только на разные группы потребителей, как в примере, представленном здесь Функции концентраторов событий Если я запускаю каждый проект отдельно, они оба прекрасно работаютпроблема в том, что если я сначала запускаю какой-либо из проектов, а затем запускаю второй, я получаю сообщение об ошибке, что этот IServiceProvider удаляется.Ошибка в окне вывода:

Возникло исключение: System.NullReferenceException в Microsoft.Azure.WebJobs.Script.WebHost.dll

Реализация функции настолько проста, насколько это возможно:

    [FunctionName("MessageFunction")]
    public static async Task Run([EventHubTrigger("myActualEventHubName", Connection = "HubConnection", ConsumerGroup = "StoreMap")]OrderRecord message, ILogger log)
    {
        try
        {
            if (message != null)
            {
                log.LogInformation($"Got a valid message");
                await Task.Delay(1000);
            }

            log.LogInformation($"Event Hub trigger function processed a message: {message}");
        }
        catch (Exception e)
        {
            log.LogError("Error while processing.", e);
        }
    }

Function error

Это достижимо, или я что-то упустил, или это просто ошибка в какой-то библиотеке?Спасибо за помощьУстановленные Nugets:

Microsoft.NET.Sdk.Functions 1.0.24

Microsoft.Azure.WebJobs.Extensions.EventHubs 3.0.1

1 Ответ

0 голосов
/ 27 ноября 2018

Это вызвано занятым портом TCP.Когда функция host запускается локально, она слушает порт 7071 по умолчанию.Нам нужно указать разные порты, чтобы несколько экземпляров работали вместе.

Щелкните правой кнопкой мыши по вашему проекту> Свойства> Отладка, в разделе аргументов приложения добавьте host start -port 7072.

...