如何从Nifi连接队列中获取流文件列表?

时间:2018-09-07 10:50:13

标签: apache-nifi

当使用NiFi REST API阻止流时,我想从连接的队列中获取每个流文件。

我发现/nifi-api/flowfile-queues/{id}/listing-requests的功能可以满足我的需求。它会响应一个ListingRequestDTO: enter image description here

名为flowFileSummaries的字段可以返回一个flowFile数组。然后我可以从flowfiles中获取每个uuid:

{
"uri": "value",
"uuid": "value",
"filename": "value",
"position": 0,
"size": 0,
"queuedDuration": 0,
"lineageDuration": 0,
"clusterNodeId": "value",
"clusterNodeAddress": "value",
"penalized": true

}

但是,当我使用API​​却找不到“ FlowFileSummary”

{
"listingRequest": {
    "id": "0165122a-e1ac-134e-2c09-92ba9ca93e8b",
    "uri": "http://.../nifi-api/flowfile-queues/07a23828-d6f3-1e00-27af-f0428a493507/listing-requests/0165122a-e1ac-134e-2c09-92ba9ca93e8b",
    "submissionTime": "09/07/2018 18:46:57.496 CST",
    "lastUpdated": "18:46:57 CST",
    "percentCompleted": 0,
    "finished": false,
    "maxResults": 100,
    "state": "Waiting for other queue requests to complete",
    "queueSize": {
        "byteCount": 370689,
        "objectCount": 995
    },
    "sourceRunning": false,
    "destinationRunning": false
}

}

那么,有没有可能实现的解决方案?或其他解决方案?谢谢!

2 个答案:

答案 0 :(得分:3)

在列表请求完成之前,我不相信流文件摘要是可用的。在上面的示例响应中,请注意MiniCssExtractPlugin为假。您可以继续查询该列表请求的API,直到finished为真为止,然后摘要就可用了。然后,您可以使用finished/flowfile-queues/{id}/flowfiles/{flowfile-uuid}端点来获取每个流文件的属性和内容。

答案 1 :(得分:0)

您不需要完成列表请求。这是我成功用于获取流文件内容的步骤

  1. 从NiFi UI控制台获取队列的ID
  2. 在此处替换id:curl -X POST https://myhost:443/nifi-api/flowfile-queues/ {id} / listing-requests -H'授权:不记名'--compressed --insecure
  3. 要获取队列中流文件的uri,请在步骤2中从命令的响应中获取“ uri”字段的值,并在下一个curl命令中使用它,例如: 例如:curl -X GET https://myhost:443/nifi-api/flowfile-queues/0f66c88c-225d-3229-b2e1-597d8fba2c09/listing-requests/13802f9c-016a-1000-0000-00004eb033fb -H'授权:不记名'--compressed --insecure
  4. 要获取流文件内容,请在步骤3中从命令的响应中获取'uri'字段的值,并在下一个curl命令中使用它,例如: curl -X GET https://myhost:443/nifi-api/flowfile-queues/0f66c88c-225d-3229-b2e1-597d8fba2c09/flowfiles/7ccf5c54-7c8d-448a-a124-7f75f5845ec1?clusterNodeId=35a3df65-d7bf-47d2-b162-ea15c3c02c30 -H'授权:'--compressed-不安全

注意:如果有多个流文件,则在步骤3 curl命令的响应中将看到多个URI