Сбросить видимость сообщения очереди хранилища Azure

Мой сценарий: у меня есть очередь хранилища Azure, куда сообщения могут приходить в любое время. Если у меня в очереди 10 элементов, их обязательно нужно обрабатывать по порядку. Я использую C # и пакет SDK для Windows Azure Storage.

Если первый элемент выходит из строя, скажем, через 2 секунды, он остается невидимым в очереди еще 28 секунд (по умолчанию 30 секунд невидимость).

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

Это кажется действительно базовой функциональностью для всех, кому нужна очередь, в которой элементы обрабатываются по порядку.

Нет, я не могу установить меньшее время ожидания, потому что задачи могут занимать разное время.


person George Harnwell    schedule 08.03.2018    source источник
comment
Вы не можете гарантировать порядок для очередей хранилища Azure. Независимо от того, какая настройка невидимости. Если вам нужно упорядоченное содержимое очереди, вам нужно будет перейти на очереди служебной шины.   -  person David Makogon    schedule 08.03.2018


Ответы (1)


Джордж, если вы ищете решение для очередей обмена сообщениями, которое обрабатывает элементы по порядку, вам следует рассмотреть возможность использования очередей служебной шины Azure:

Как архитектор / разработчик решения вам следует рассмотреть возможность использования очередей служебной шины в следующих случаях:

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

Ваше решение требует, чтобы очередь обеспечивала гарантированную доставку в порядке очереди (FIFO).

Вам нужен симметричный опыт работы в Azure и Windows Server (частное облако). Дополнительные сведения см. В разделе служебная шина для Windows Server.

Ваше решение должно поддерживать автоматическое обнаружение дубликатов.

Есть хорошая статья, в которой сравниваются очереди хранилища и служебная шина: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-azure-and-service-bus-queues-compare-contrasted, последний может оказаться более подходящим для вашего случая.

person Adam Smith - Microsoft Azure    schedule 22.03.2018
comment
Спасибо, Адам. По иронии судьбы, в прошлом я использовал оба варианта много раз, но никогда не осознавал, что очереди хранилища не могут гарантировать порядок выполнения. Вы живете и учитесь, я думаю! - person George Harnwell; 22.03.2018
comment
Я заметил, что вы на самом деле являетесь частью команды Microsoft, у нас с Адамом есть пара вопросов, связанных с хранилищем BLOB-объектов, которые не обязательно требуют публикации SO. Есть ли где-нибудь, где мы могли бы поговорить наедине? - person George Harnwell; 23.03.2018
comment
@GeorgeHarnwell, вы можете опубликовать сообщение на форуме хранилища MSDN, мы - пара сотрудников MS и MVP, которые следят за форумами: social.msdn.microsoft.com/forums/azure/en-US/ Если вы считаете, что этот вопрос может быть отклонен здесь, вы можете опубликовать его в ответах MSDN и мы будем следить за этим. Кроме того, если вы считаете, что мой ответ был правильным на вышеупомянутый вопрос, проголосуйте за него или закройте его, чтобы его видело сообщество. Спасибо - person Adam Smith - Microsoft Azure; 23.03.2018