Функция Azure QueueTrigger не обрабатывает сообщение и демонстрирует странное поведениеC#

Место общения программистов C#
Ответить
Anonymous
 Функция Azure QueueTrigger не обрабатывает сообщение и демонстрирует странное поведение

Сообщение Anonymous »

Я реализую обработчик сообщений очереди в веб-задании в службе приложений Azure. Но я испытываю очень странное поведение в приложении-обработчике. Процесс очень прост: у меня есть приложение-триггер, которое создает сообщение и отправляет его в очередь. Затем у меня есть приложение-прослушиватель/обработчик в отдельной службе приложений, которая извлекает сообщение из очереди и обрабатывает его. Ниже приведены два очень небольших фрагмента кода этих двух приложений.

Код: Выделить всё

//TRIGGER APP
QueueClient queue = new QueueClient(storageConnectionString, queueName);
queue.CreateIfNotExists();
queue.SendMessage(JsonConvert.SerializeObject(myModel));

//HANDLER APP
public class Functions
{
IConfiguration configuration;
private static List cosmosClients = new List();
public Functions(IConfiguration _configuration)
{
configuration = _configuration;
}
public void ProcessQueueMessageAsync([QueueTrigger("%QueueName%")] string message)
{
Console.WriteLine(message);
// do more stuff here...
}
}
Странное поведение заключается в том, что мое «приложение-обработчик» немедленно помещает сообщение в подозрительную очередь. Я нигде не нашел журналов ошибок. Я просматривал журнал консоли, журнал службы приложений и даже стример журналов в режиме реального времени, и никаких ошибок нигде не регистрировалось. Но все сообщения помещаются в подозрительную очередь. И они помещаются в подозрительную очередь еще до того, как код достигает первой строки обработчика (

Код: Выделить всё

Console.WriteLine(message);
) Еще более странно то, что я могу перейти в подозрительную очередь, найти отравленное сообщение, вручную скопировать и вставить это «отравленное» сообщение обратно в обычную очередь (та же очередь, что и в приведенном выше коде). на портале Azure (не в коде). И после ручного добавления его обратно в очередь с помощью портала, вызывается Console.WriteLine(message);, сообщение регистрируется и прекрасно проходит через остальную часть приложения. Меня это сбивает с толку.
Я тоже смотрел это в режиме реального времени. Я вижу, что сообщение помещено в обычную очередь. Я осматриваю его, и он выглядит нормально. Через несколько секунд он исчезает и появляется в очереди ядов. Я осматриваю его, и он выглядит точно так же. Я копирую это сообщение очереди из подозрительной очереди, «Добавляю сообщение» обратно в обычную очередь и просто вставляю то, что было в подозрительной очереди. Затем он обрабатывается нормально (не возвращается в подозрительную очередь). У меня также есть другие механизмы журналирования, позволяющие убедиться, что оно успешно обрабатывается после «вставки» обратно.
Я добавляю сообщение в очередь неверным способом в коде (приложение-триггер выше)? Что мне здесь не хватает?

Подробнее здесь: https://stackoverflow.com/questions/776 ... rre-behavi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»