#azure #azure-logic-apps #azure-api-apps #azure-storage-queues
#azure #azure-logic-apps #azure-api-apps #azure-storage-queues
Вопрос:
В моем приложении logic я не вижу способа установить TTL или дату истечения срока действия сообщения очереди.
Но это возможно из пользовательского интерфейса, поэтому я знаю, что API может это сделать:
Я даже пытался «взломать» параметр строки запроса messagettl в представлении кода:
"actions": {
"Put_a_message_on_a_queue": {
"inputs": {
"body": "@{base64(items('For_each'))}",
"host": {
"connection": {
"name": "@parameters('$connections')['azurequeues']['connectionId']"
}
},
"method": "post",
"path": "/@{encodeURIComponent('updateuser')}/messages?messagettl=3600"
},
"runAfter": {},
"type": "ApiConnection"
}
}
Но я получаю сообщение об ошибке:
{
"message": "Unable to match incoming request to an operation."
}
Ответ №1:
Я понял это, просмотрев вызов API, выполненный в пользовательском интерфейсе добавления сообщений в очередь на портале Azure. Он добавляет параметр строки запроса messagettl
, который равен секундам TTL.
Итак, я просмотрел схему здесь и обнаружил, что вы можете передать "queries": {...}
объект в HTTP-вызов для добавления сообщения.
Окончательный вид кода в формате JSON:
"actions": {
"Put_a_message_on_a_queue": {
"inputs": {
"body": "@{base64(items('For_each'))}",
"host": {
"connection": {
"name": "@parameters('$connections')['azurequeues']['connectionId']"
}
},
"method": "post",
"path": "/@{encodeURIComponent('updateuser')}/messages",
"queries": {
"messagettl": 3600
}
},
"runAfter": {},
"type": "ApiConnection"
}
}
Комментарии:
1. Я перешел на logic apps после того, как они устарели от старого планировщика. Я забыл о TTL, и срок действия нескольких моих заданий не истек, как должен был, когда пакетный процессор не работал на выходные. Тьфу. По крайней мере, мне не нужно запускать свой собственный метод / функцию / действие, чтобы элемент был добавлен в очередь сейчас. Спасибо!
2. Работает ли установка messagettl = -1, как указано здесь, в этом документе? Я не смог заставить это работать. learn.microsoft.com/en-us/rest/api/storageservices/put-message . Ошибка: один из параметров запроса, указанных в URI запроса, выходит за пределы допустимого диапазона. Минимально допустимый 1; Максимально допустимый 604800