Apache nifi 如何在nifi连接中从队列中获取流文件列表?

Apache nifi 如何在nifi连接中从队列中获取流文件列表?,apache-nifi,Apache Nifi,当流被NiFi REST API阻塞时,我想从连接中的队列中获取每个流文件 我发现/nifi api/flowfile queues/{id}/listing requests的功能可以满足我的需要。它响应ListingRequestDTO: 名为flowFileSummaries的字段可以返回一个flowFile数组。然后我可以从flowFile中获取每个uuid: { "uri": "value", "uuid": "value", "filename": "value", "positi

当流被NiFi REST API阻塞时,我想从连接中的队列中获取每个流文件

我发现
/nifi api/flowfile queues/{id}/listing requests
的功能可以满足我的需要。它响应ListingRequestDTO:

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

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

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

}


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

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

您不需要有列表请求来完成。以下是我成功获取流文件内容的步骤

  • 从NiFi UI控制台获取队列的id
  • 在这里替换id:curl-X POST{id}/listing requests-H'Authorization:Bearer'--压缩--不安全
  • 要获取队列中流文件的uri,请从步骤2中命令的响应中获取“uri”字段的值,并在下一个curl命令中使用它,例如: 对于ex:curl-X GET-H'Authorization:Bearer'--压缩--不安全
  • 要获取流文件内容,请从步骤3中命令的响应中获取“uri”字段的值,并在下一个curl命令中使用它,例如: curl-X GET-H“授权:”--compressed--不安全

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

    非常感谢。我看到了你的许多答案,从中我学到了很多。我仍然不知道如何使
    完成
    变成
    正确
    。但我解决了这个问题。我发现
    listingRequest
    uri
    字段是
    /flowfile queues/{id}/listing requests/{listing request id}
    ,我可以使用此uri从get获取摘要。因此,我想问两个问题:1。如何使登录请求完成?2.什么是登录请求id?再次感谢
    {
    "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
    }