簡體   English   中英

Azure IoT-Hub 作業查詢返回的結果很少

[英]Azure IoT-Hub Job Query returns to few results

我已經使用 Azure IoT-Hub 的 REST API 成功安排了很多工作,如https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-jobs中所述。 也就是說,我安排了作業來執行直接方法。

但是,當我嘗試查詢預定作業的狀態時(如同一頁所述),我總是只得到一個條目:第一個成功預定作業的狀態。 我如何獲得所有工作的狀態?

我的查詢是:

curl -X GET \
  https://<iot-hub-name>.azure-devices.net/jobs/v2/query?api-version=2018-06-30 \
  -H 'Authorization: SharedAccessSignature <sas-token>' \
  -H 'Content-Type: application/json; charset=utf-8' -o response.json

我上面使用的 SAS Token 與調度作業時使用的相同。 因此,不存在身份驗證問題。

盡管我已經安排了 11 個作業,但格式化的響應僅包含 1 個條目:

[
    {
        "jobId": "job02",
        "queryCondition": "deviceId = simple_thermostat",
        "createdTime": "2022-03-02T15:59:27.4093129Z",
        "startTime": "2022-03-02T15:20:15Z",
        "endTime": "2022-03-02T15:59:34.5969497Z",
        "maxExecutionTimeInSeconds": 10000,
        "type": "scheduleDeviceMethod",
        "cloudToDeviceMethod": {
            "methodName": "getMaxMinReport",
            "payload": "hello",
            "responseTimeoutInSeconds": 300,
            "connectTimeoutInSeconds": 0
        },
        "status": "completed",
        "deviceJobStatistics": {
            "deviceCount": 0,
            "failedCount": 0,
            "succeededCount": 0,
            "runningCount": 0,
            "pendingCount": 0
        }
    }
]

PS:獲取單個作業的狀態按預期工作。 喜歡使用這個請求:

curl -X GET \
  https://<iot-hub-name>.azure-devices.net/jobs/v2/job11?api-version=2018-06-30 \
  -H 'Authorization: SharedAccessSignature <sas-token>' \
  -H 'Content-Type: application/json; charset=utf-8' -o response.json

但是,上面的查詢中永遠不會返回 job11。

正如 Roman Kiss 所指出的,continuation token 可以在第一個響應的 header 中找到。 要通過 curl 保存 header,必須指定選項-D 因此,第一個查詢必須如下所示:

curl -X GET \
  https://<iot-hub-name>.azure-devices.net/jobs/v2/query?api-version=2018-06-30 \
  -H 'Authorization: SharedAccessSignature <sas-token>' \
  -H 'Content-Type: application/json; charset=utf-8' \
  -D response_hdr.txt -o response.json

然后 response_hdr.txt 將包含這樣一行:

x-ms-continuation: eyJzb3VyY2UiOiJkZGIiLCJ0b3RhbFJldHJpZXZlZENvdW50Ijo4LCJjb250aW51YXRpb25Ub2tlbiI6Ilt7XCJ0b2tlblwiOm51bGwsXCJyYW5nZVwiOntcIm1pblwiOlwiMDVDMUU3RkZGRkZGRkFcIixcIm1heFwiOlwiRkZcIn19XSJ9

但是,如 Microsoft 文檔中所述,不得在 URL 中指定此延續令牌。 相反,它必須在后續查詢的 header 中提供:

curl -X GET \
  https://<iot-hub-name>.azure-devices.net/jobs/v2/query?api-version=2018-06-30 \
  -H 'Authorization: SharedAccessSignature <sas-token>' \
  -H 'Content-Type: application/json; charset=utf-8' \
  -H 'x-ms-continuation: <continuation_token_from_previous_query>' \
  -D response_hdr.txt -o response.json

此查詢將提供一個新的延續令牌。 它看起來非常相似,但並不完全相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM