Я пытаюсь взаимодействовать с Azure Queue с использованием REST прокси любезность Windows Azure SDK for PHP. Хотя есть много примеров кода here, Я хочу проверить, существует ли очередь, чтобы я мог создать ее, если необходимо, перед добавлением к ней сообщения.Проверьте Azure Queue существует с использованием REST прокси (PHP)
try {
// setup connection string for accessing queue storage
$connectionString = 'DefaultEndpointsProtocol=' . PROTOCOL . ';AccountName=' . ACCOUNT_NAME . ';AccountKey=' . ACCOUNT_KEY;
// create queue REST proxy
$queueRestProxy = ServicesBuilder::getInstance()->createQueueService($connectionString);
// create message
$queueRestProxy->createMessage(QUEUE_NAME, 'Hello World!');
} catch(ServiceException $e){
// Handle exception based on error codes and messages.
// Error codes and messages are here:
// http://msdn.microsoft.com/en-us/library/windowsazure/dd179446.aspx
$code = $e->getCode();
$error_message = $e->getMessage();
echo $code.": ".$error_message."<br />";
}
Создание очереди так просто, как это ...
$queueRestProxy->createQueue(QUEUE_NAME);
Должен ли я просто включить код создания очереди до создания сообщения или есть более эффективный способ определить, является ли очереди существует, прежде чем взаимодействовать с ним?
@Guarav - спасибо за ваш ответ. После некоторого тестирования кажется, что несколько последовательных вызовов createQueue (QUEUE_NAME) не вызывают выброса ServiceException, поэтому кажется, что внутренние интерфейсы Azure обрабатывают это молча. Возможно, поэтому они не публикуют методы createQueueIfNotExists или queueExists в SDK. – w5m
Я так не думаю. Кроме того, все остальные SDK имеют эту функцию. См. Здесь .Net: http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.windowsazure.storage.queue.cloudqueue.createifnotexists.aspx. Все SDK являются оберткой над REST API, поэтому я не думаю, что это причина. –
По общему признанию, мое наблюдение не согласуется с разделом «Замечания» на странице «Создать интерфейс REST API» (http://msdn.microsoft.com/en-us/library/windowsazure/dd179342.aspx), который соответствует ваш ответ, т. е. возвращается 409, если очередь существует с несогласованными метаданными, возвращается 204, если существует очередь с соответствующими метаданными. Тем не менее, я не вижу реальности этих кодов ответов, поскольку исключение не выбрасывается. – w5m