2016-06-10 4 views
0

Я создал очередь в Azure Queue и выделил два элемента в ней. Использование nodejs SDK, я создать таймер, который выполняется каждые 5 секунд и вызовы:Azure queues метод getMessages в sdk не работает как ожидалось

azure.createQueueService("precondevqueues", "<key>").getMessages(queueName, {numOfMessages : 1, visibilityTimeout: 1 }, callback) 

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

Это не должно быть так, поскольку visibilityTimeout установлено в 1 и, следовательно, через 1 секунду сообщение, удаленное при первом вызове, должно быть снова видимым до следующего вызова getMessage.

ответ

0

Как указано here, заказ FIFO не гарантируется. Таким образом, может случиться так, что большинство сообщений времени выбираются в порядке FIFO, но это не гарантируется, и Azure может предоставить вам сообщения в том порядке, который лучше всего подходит для их реализации.

сообщения, как правило, добавляется в конец очереди и извлекаются из передней части очереди, хотя первый вошел, первым вышел (FIFO) поведение не гарантируется.

+0

Ну, я вижу поведение каждый раз. Кажется, что getMessages действительно обновляет запись, толкает ее обратно в очередь. – Kartik

+0

Да, это возможно, и в заявлении в его документации совершенно нормально. – DAXaholic

+0

Я пробовал с 3-мя элементами, а затем 4, и он ведет себя так, как будто getMessages вынимает этот элемент и завершает его обратно в хвост. Поэтому, если вы вставляете a, b, c и d, то каждые несколько интервалов вы получаете getMessage (с таймаутом видимости меньше интервала), вы в основном выполняете цикл через a-> b-> c-> d – Kartik

0

Aha моя ошибка! Я очень внимательно прочитал документацию getMessages и понял, что getMessages удаляет сообщение, но сохраняет невидимую копию вне очереди. Если процессор сообщений не удаляет сообщение до истечения времени ожидания видимости, копия повторно отображается в сообщении, и поэтому они идут в конец очереди.

 Смежные вопросы

  • Нет связанных вопросов^_^