Планировщик Azure: поместить сообщение в очередь хранилища

Я создаю задание в коллекции заданий планировщика Azure. Идея состоит в том, чтобы поместить сообщение в очередь в запланированное время. Я перешел по этой ссылке, чтобы настроить https job, но я застрял в точке, где мне нужно добавить заголовок запроса x-ms-date (или Date), который должен быть «не старше 15 минут» в соответствии с документами MS.

введите здесь описание изображения

Мне приходится использовать тип действия https, поскольку портал планировщика Azure не поддерживает очереди, созданные ARM. Хотя этого можно добиться с помощью Scheduler SDK, мы можем выбрать его в крайнем случае.

Сообщите мне, возможно ли это через портал Azure.

Спасибо


person Flemin Adambukulam    schedule 30.11.2016    source источник


Ответы (1)


Вместо использования URL-адреса очереди вы можете создать Shared Access Signature (SAS) в очереди с разрешением не менее Add и использовать этот URL-адрес SAS. Вы должны использовать URL-адрес, подобный следующему:

https://{account-name}.queue.core.windows.net/{queue-name}/messages?messagettl=3600&se=2016-11-30T18%3A30%3A00Z&sp=raup&sv=2015-12-11&sig={sas-signature}

Вам нужно будет указать заголовок запроса Content-Type, который вы можете установить на application/xml.

введите здесь описание изображения

Как только вы это сделаете, вы должны увидеть сообщения в очереди.

введите здесь описание изображения

person Gaurav Mantri    schedule 30.11.2016
comment
Спасибо. Подпись общего доступа сделала свое дело. Мне также пришлось удалить настройки аутентификации, которые я поставил. Это намного проще. - person Flemin Adambukulam; 30.11.2016
comment
В другой, но не совсем связанной с этим заметке: не могли бы вы помочь мне с тем, почему планировщик Azure анализирует XML-сообщение, которое я передаю в сообщении запроса? Например, ‹a›‹b›Sample‹/b›‹/a› в сообщении запроса поступает в очередь как Sample. Мне нужно все xml-сообщение. Заранее большое спасибо. - person Flemin Adambukulam; 01.12.2016
comment
Тело сообщения должно быть безопасным для XML. Один из способов сделать это — заменить < на &lt;, а > на &gt;. Таким образом, содержание сообщения будет &lt;a&gt;&lt;b&gt;Sample&lt;/b&gt;&lt;/a&gt;. Другой способ, которым вы могли бы это сделать, - преобразовать тело сообщения в строку, закодированную в base64, и использовать ее. На стороне получателя вам нужно будет декодировать закодированную строку. ХТН. - person Gaurav Mantri; 01.12.2016
comment
Это работает для меня сейчас. Интересно, почему это не упоминается в документах Microsoft, на которые я ссылался. Большое спасибо. - person Flemin Adambukulam; 01.12.2016
comment
Я также попробовал кодировку Base64, и похоже, что нам не нужно декодировать сообщение на стороне получателя. Я получаю фактическое сообщение xml в очереди, а не закодированное сообщение. - person Flemin Adambukulam; 01.12.2016
comment
Что касается вашего первого комментария об отсутствующей документации, он действительно упоминается в docs.microsoft.com/en-us/rest/api/storageservices/fileservices/: To include markup in the message, the contents of the message must either be XML-escaped or Base64-encode.. Что касается вашего второго комментария, это зависит от того, какой инструмент вы используете для просмотра сообщений. Некоторые инструменты предполагают, что сообщения всегда закодированы в Base64, и всегда преобразуют их (таким образом, произойдет сбой, если вы отправляете незакодированный текст), в то время как некоторые инструменты умны и выполняют преобразование. - person Gaurav Mantri; 01.12.2016
comment
Мой плохой комментарий к документации. Во втором комментарии я просмотрел сообщение с помощью проводника хранилища. Большое спасибо за расширенные комментарии. - person Flemin Adambukulam; 01.12.2016
comment
Пожалуйста. Я считаю, что проводник хранилища не сможет показать сообщение, если вы создадите их без кодирования. См. эту тему: stackoverflow.com/questions/40551430/. - person Gaurav Mantri; 01.12.2016
comment
Нет, это не потерпело неудачу, когда я поместил сообщение без кодировки. На самом деле я поместил точную строку с экранированием xml из ссылки, которой вы поделились по моему запросу, и очередь получила ее правильно. В моем случае Webjob, который читал сообщение очереди, завершался с той же ошибкой, что и @thllbrg. Я уверен, что очередь учетной записи хранения правильно получает сообщение. - person Flemin Adambukulam; 01.12.2016