Не удается правильно настроить AzureFunction (javascript) с помощью триггера even hub: «Приемник концентратора событий не назван …»

#javascript #function #azure-functions #azure-eventhub

#javascript #функция #azure-функции #azure-eventhub

Вопрос:

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

Это моя функция.json:

 {
  "bindings": [
    {
      "name": "messages",
      "connectionString": "IoTHub_LogItConnectionString",
      "eventHubName": "%IoTHub_LogItEventHubName%",
      "cardinality": "one",
      "dataType": "string",
      "direction": "in",
      "type": "eventHubTrigger"
    }
  ]
}
 

это ошибка, которую я получаю:

 [Error] Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.IoTHub_LogIt'. Microsoft.Azure.WebJobs.EventHubs: No event hub receiver named aadc0z0eh-main.
 

Если я удаляю %% из значения свойства eventHubName, я просто получаю аналогичную ошибку, но жалуюсь на вызываемый приемник IoTHub_LogItEventHubName .

Это index.js

 module.exports = function (context, messages) {
    context.log(`JavaScript eventhub trigger function called for message array: ${messages}`);
    
    messages.forEach(message => {
        context.log(`Processed message: ${message}`);
    });

    context.done();
};
 

Что я делаю не так?

Комментарии:

1. Вы тестируете его на локальном? Вы установили значение IoTHub_LogItEventHubName в local.settings.json?

2. Сейчас он находится на стадии PoC. Я бы ожидал, что он будет готовым на портале. Так что нет, я не тестировал его локально, только играл с порталом. И да, я установил два свойства IoTHub_LogItConnectionString и IoTHub_LogItEventHubName в конфигурации FunctionApp

3. Просто для подтверждения, строка подключения, которую вы используете, относится к пространству имен Event Hubs, а не к концентратору интернета вещей, а не к строке подключения на уровне концентратора событий?

4. Я перепробовал все возможные комбинации, строку подключения из пространства имен концентратора, из самого концентратора, ничего не сработало.

Ответ №1:

В конце концов я удалил приложение function, воссоздал его и снова добавил функцию, НО с помощью опции: любой редактор и функциональный инструмент.

Работал как с версиями 2, так и с 3 функционального инструмента. Я изменил только версию (2 или 3) или используемый узел (10 или 12) в настройках приложения функции.

Я смог протестировать его локально и с реальной функцией.

Я думаю, разница заключалась в том, что мне пришлось также создать учетную запись хранилища и предоставить для нее строку подключения. (укажите имя azurewebjobstorage в настройках приложения функции, а также в local.settings.json, чтобы он работал локально)