2015-05-14 4 views
1

Когда сообщение извлекается из очереди в лазурном режиме, но не удаляется из него, истекает время ожидания видимости сообщений, и сообщение (повторно) добавляется в конец очередь.Azure queue - возвращает тайм-ауты сообщений в голову очереди

Есть ли способ вернуть такие сообщения в голову очереди?

+0

Не уверен, что я понял ваш сценарий, но если вы напишите сообщение PeekLock, возможно, вам удастся его повторно добавить в очередь. Если процесс завершился успешно, удалите сообщение, иначе просто удалите блокировку. – DanielG

+0

@ DanielG Думаю, вы говорите о очередях служебной шины azure. Я имею в виду регулярные очереди лазурных: https://azure.microsoft.com/en-in/documentation/articles/storage-dotnet-how-to-use-queues/ – Malt

+0

@ DanielG, хотя использование очередей служебной шины может быть фактически решение .. – Malt

ответ

2

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

Кроме того, зарегистрируйтесь this forum answer от Jai Haridas относительно заказа сообщений в очереди. В частности:

Сообщения в очереди сегодня сортируются по его времени видимости. Поэтому порядок сообщений зависит от того, когда они становятся видимыми. Тем не менее, важно, чтобы приложение не предполагало заказ FIFO или какой-либо конкретный порядок, поскольку он может измениться в будущем. Вы можете рассчитывать только, что 1) сообщение будет иметь право на основании его Тайм-аут видимости и 2) Обработка сообщений должны быть идемпотент и использовать новый UpdateMessage чтобы сохранить состояние

UpdateMessage() позволяет изменять сообщение в очереди (например, добавив панировочные сухари), поэтому в следующий раз, когда вы начнете обрабатывать его, вы можете подобрать в точке, отличной от «старта». Обратите внимание, что вы также можете настроить значение тайм-аута, пока оно все еще находится в вашем распоряжении и невидимо, чтобы вы могли продолжать работать над сообщением.