Лучшие практики транзакций хранения в очереди и таблицах Azure - PullRequest
3 голосов
/ 07 февраля 2012

Используя хранилище таблиц Azure, я прочитал о транзакциях Entity Group в том же разделе.Что произойдет, если я использую очередь Azure вместе с хранилищем таблиц.Можно ли обработать сообщение из очереди, вставить в хранилище таблиц.Если что-то сломается, выполните откат и снова поместите сообщение в очередь?

Или как мне справиться с таким сценарием в Azure

1 Ответ

6 голосов
/ 07 февраля 2012

Таблицы и очереди не имеют связанных транзакций.

Вот некоторые общие рекомендации по использованию очереди:

  • Убедитесь, что действия очереди идемпотентны - чтото есть, у вас будут одинаковые результаты при выполнении сообщения очереди более одного раза с повторяющимися побочными эффектами
  • Установите разумный тайм-аут видимости сообщения очереди.Если ваша задача выглядит так, как будто это займет больше времени, вы можете продлить тайм-аут невидимости сообщения.Это не позволяет другим потокам / экземплярам ролей захватывать один и тот же элемент очереди, пока вы еще над ним работаете.
  • Для долгосрочных задач (или тех, где вы хотите избежать многократного использования ресурса, если это возможно),изменяйте свое сообщение в очереди, давая себе подсказки статуса .Например: у вас есть сообщение очереди видео-рендеринга: 'RENDER|Source-URL'.Вы рендеринг видео, и ему нужно два прохода.Вы сделали проход 1 с результатами, сохраненными во временном BLOB-объекте.Вы можете изменить сообщение, например, 'RENDER|Source-URL|Pass1-URL'.Теперь предположим, что что-то идет не так, и задача рендеринга по какой-то причине не выполняетсяПозже, когда вы снова получите это сообщение, вы можете начать с этапа 2, а не с самого начала.
  • Вам не нужно беспокоиться о возврате сообщений в очередь.Сообщения на самом деле не удаляются из очереди, пока вы явно не удалите их.Они просто становятся невидимыми в течение выбранного вами периода ожидания невидимости.Если вы не удалите к концу этого периода (или продлите период), сообщение снова станет видимым для прочтения кем-то другим. Примечание: На этом этапе, когда кто-то еще читает сообщение очереди, первоначальный держатель сообщения больше не сможет удалить сообщение.
...