Очередь Azure, AddMessage, затем UpdateMessage

Можно ли добавить сообщение в очередь Azure, а затем в том же потоке обновить или удалить это сообщение?

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

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

До сих пор кажется, что добавление сообщения допускает задержку доставки, давая веб-роли некоторое время, но не возвращает всплывающую квитанцию, которая, похоже, нам понадобится для обновления/удаления сообщения. Я что-то упускаю?


person Justin R    schedule 13.11.2014    source источник


Ответы (2)


Кажется, эта функция была добавлена ​​как часть сообщения "2016-05-31” REST API

теперь мы делаем всплывающее значение квитанции доступным в ответе «Положить сообщение» (он же «Добавить сообщение»), который позволяет пользователям обновлять/удалять сообщение без необходимости сначала извлекать сообщение.

person Justin R    schedule 19.01.2018

Я предлагаю вам выполнить следующие шаги, так как это сработало для меня

Практическое руководство. Создание очереди Объект CloudQueueClient позволяет получить эталонные объекты для очередей. Следующий код создает объект CloudQueueClient. Весь код в этом руководстве использует строку подключения к хранилищу, хранящуюся в конфигурации службы приложения Azure. Существуют и другие способы создания объекта CloudStorageAccount. Дополнительные сведения см. в документации CloudStorageAccount.

// Retrieve storage account from connection string
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the queue client
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

Используйте объект queueClient, чтобы получить ссылку на очередь, которую вы хотите использовать. Вы можете создать очередь, если она не существует.

// Retrieve a reference to a queue
CloudQueue queue = queueClient.GetQueueReference("myqueue");

// Create the queue if it doesn't already exist
queue.CreateIfNotExists();

Как: вставить сообщение в очередь Чтобы вставить сообщение в существующую очередь, сначала создайте новый CloudQueueMessage. Затем вызовите метод AddMessage. CloudQueueMessage может быть создан либо из строки (в формате UTF-8), либо из массива байтов. Вот код, который создает очередь (если она не существует) и вставляет сообщение «Hello, World»: // Получить учетную запись хранения из строки подключения. CloudStorageAccount storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

// Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("myqueue");

// Create the queue if it doesn't already exist.
queue.CreateIfNotExists();

// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage("Hello, World");
queue.AddMessage(message);

Для получения более подробной информации перейдите по этой ссылке. http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-queues/

Гириш Праджвал

person Girish Prajwal    schedule 12.12.2014