0

Я пытаюсь написать систему в лазури, и для одной его частей я хочу, чтобы иметь возможность иметь несколько бит кода записи в очередь, и есть один бит кода обработки обрабатывает каждый элемент в очереди.Azure Queue Trigger дает элемент нулевой очереди неправильно

Элементы добавляются в очередь правильно. Я проверил это; У меня есть Visual Studio с плагинами Azure. Затем я могу использовать Cloud Explorer, чтобы вытащить учетную запись хранилища и просмотреть очередь. Здесь содержимое очереди кажется правильным, поскольку Предварительный просмотр текстового сообщения выглядит так, как я ожидал.

Однако, когда я добавляю лазурь функции с очередью триггера для обработки этого, в то время как триггер срабатывает, то элемент очереди выходит пустым. Я попробовал код учебника, немного порезал. Когда я установил функцию запуска быть:

public static void Run(string myQueueItem, 
    DateTimeOffset expirationTime, 
    DateTimeOffset insertionTime, 
    DateTimeOffset nextVisibleTime, 
    string queueTrigger,   
    TraceWriter log) 
{ 
    log.Info($"C# Queue trigger function processed:  '{myQueueItem.GetType()}'\n" + 
     $"queueTrigger={queueTrigger}\n" + 
     $"expirationTime={expirationTime}\n" + 
     $"insertionTime={insertionTime}\n" + 
     $"nextVisibleTime={nextVisibleTime}\n"); 
} 

Затем я получить выход с пунктом очереди пуст, когда я знаю, что это не так. Элемент триггера очереди также пуст. Вот некоторые пример вывода, когда я запустить функцию непосредственно в Azure Функции:

016-11-01T13:47:41.834 C# Queue trigger function processed: 
queueTrigger= 
expirationTime=12/31/9999 11:59:59 PM +00:00 
insertionTime=11/1/2016 1:47:41 PM +00:00 

Тот факт, что это вызывает у всех, и имеет разумный ищет время ввода предполагает, что я подключения к правой очереди.

Кто-нибудь знает, почему строка myQueueItem выходит пустым, когда инструмент выглядывал очередь может увидеть полную строку предварительного просмотра?

ответ

1

У меня теперь это работает. Я сделал две вещи.

Сначала я зачистил очередь «яд». Раньше я пытался десериализовать некоторый объект из очереди.

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

С этого момента, когда я добавляю очереди, они обрабатываются корректно.

+0

Приятно слышать, что это работает на вас! Чтобы уточнить, что вы имеете в виду, когда говорите «когда вы вручную запускаете отключенную очередь»? Вы использовали опцию «запустить» на портале Azure Functions? –

+0

Да, я использовал параметр run на портале Azure, но функция была отключена. Я ожидал, что это деактивирует следующий элемент из очереди и отправит его, но не запускается автоматически. Я не ожидал, что сделаю это, чтобы отправить нулевые данные обработчику, так как основным моментом в этом было бы тестирование dev, и вы не сможете проверить свою функцию на нулевой ввод. –