#c# #azure-functions
#c# #azure-функции
Вопрос:
Мой queuetrigger не активируется при добавлении данных в очередь, к которой я указал привязку. У меня есть другая надежная функция, которая получает некоторые данные JSON и помещает их в эту очередь; Я знаю, что это работает, потому что я вижу, что данные отображаются в очереди с помощью проводника хранилища. Но моя функция queuetrigger никогда не срабатывает после поступления данных в очередь.
Я знаю, что это не срабатывает, потому что общее количество выполнений показывает 0 на портале.
Полная функция довольно длинная, поэтому я поделюсь тем, что, на мой взгляд, является наиболее важными ее частями:
namespace Company.MySpecial
{
public static class MySpecialQueueProcessor
{
[FunctionName("MySpecialQueueProcessor")]
public static async void Run([QueueTrigger("myspecialqueue")]String transdata,
// various table mappings edited out
ILogger log)
{
MySpecialItem Item = JsonConvert.DeserializeObject<MySpecialItem>(transdata);
log.LogInformation($"[GROOVE-QUEUE] {Item.email} Queue processor activated");
return;
}
}
}
У меня есть async
там, потому что мне нужно вызвать некоторые задачи, для которых требуется await
оператор, и это не позволит мне использовать await
без async
. Пример:
await MyData.AddAsync (Item);
И извлечение данных из таблицы:
do
{
var page = await GrooveProductMappings.ExecuteQuerySegmentedAsync(productQuery, ct);
ct = page.ContinuationToken;
Matches.AddRange(page.Results);
}
while (ct != null);
Я не знаю, может ли это быть частью моей проблемы или нет.
Что-то не так с моим кодом, или есть что-то еще, чего я не сделал в Azure, что необходимо для его работы?
Комментарии:
1. В вашем коде отсутствует параметр подключения для привязки ввода QueueTrigger. Я подозреваю, что из-за этого он не подключается к вашей желаемой учетной записи хранилища (по умолчанию он использует ту же функцию host storage, если вы не укажете подключение). learn.microsoft.com/en-us/azure/azure-functions /…
Ответ №1:
У меня есть три вопроса:
- Правильно ли установлена строка подключения учетной записи хранилища очереди в настройках приложения функции?
- Правильно ли вы ссылаетесь на этот параметр в своей функции.свойство json «connection»?
- Вы указываете на правильную очередь в своей функции.свойство json «queueName»?
Вы также можете проверить наличие ошибок в Application Insights «Текущие показатели» (если вы настроили его для своей функции)
Комментарии:
1. #3 — Да. #2 — В
function.json
, подbindings
, естьconnection
список. Однако в вашей точке # 1 не было параметра с таким именем. Я добавил параметр с таким именем, предоставил строку подключения, полученную через портал Azure, и это сработало в первый раз! Спасибо миллион!2. Теперь, когда это работает, я опубликую отдельную проблему, потому что она выполняется несколько раз для каждого сообщения очереди.