#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
в конфигурации FunctionApp3. Просто для подтверждения, строка подключения, которую вы используете, относится к пространству имен Event Hubs, а не к концентратору интернета вещей, а не к строке подключения на уровне концентратора событий?
4. Я перепробовал все возможные комбинации, строку подключения из пространства имен концентратора, из самого концентратора, ничего не сработало.
Ответ №1:
В конце концов я удалил приложение function, воссоздал его и снова добавил функцию, НО с помощью опции: любой редактор и функциональный инструмент.
Работал как с версиями 2, так и с 3 функционального инструмента. Я изменил только версию (2 или 3) или используемый узел (10 или 12) в настройках приложения функции.
Я смог протестировать его локально и с реальной функцией.
Я думаю, разница заключалась в том, что мне пришлось также создать учетную запись хранилища и предоставить для нее строку подключения. (укажите имя azurewebjobstorage в настройках приложения функции, а также в local.settings.json, чтобы он работал локально)