как получить список потоковых файлов из очереди в соединении nifi? - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу получить каждый файл потока из очереди в соединении, когда поток был заблокирован с помощью API-интерфейса REST NiFi.

Я считаю, что функции /nifi-api/flowfile-queues/{id}/listing-requests могут удовлетворить мои потребности. И он отвечает ListingRequestDTO: введите описание изображения здесь

Поле с именем flowFileSummaries может возвращать массив flowFile. И тогда я могу получить каждый 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 голосов
/ 13 апреля 2019

Вам не нужно иметь запрос листинга для завершения. Вот шаги, которые я успешно использовал, чтобы получить содержимое файла потока

  1. Получить идентификатор очереди из консоли NiFi UI
  2. Замените идентификатор здесь: curl -X POST https://myhost:443/nifi-api/flowfile-queues/{id}/listing-requests -H 'Авторизация: Носитель' - сжатый - незащищенный
  3. Чтобы получить список потоковых файлов в очереди, получите значение поля 'uri' из ответа команды в шаге 2 и используйте его в следующей команде curl, например: Например: curl -X GET https://myhost:443/nifi-api/flowfile-queues/0f66c88c-225d-3229-b2e1-597d8fba2c09/listing-requests/13802f9c-016a-1000-0000-00004eb033fb -H 'Авторизация: Носитель' - сжатый - незащищенный
  4. Чтобы получить содержимое файла потока, получите значение поля 'uri' из ответа команды на шаге 3 и используйте его в следующей команде 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 'Авторизация:' - сжатый - незащищенный

Примечание: если есть несколько потоковых файлов, вы увидите несколько URI в ответе команды 3 curl шага

0 голосов
/ 07 сентября 2018

Я не верю, что сводные данные потокового файла доступны до тех пор, пока не будет завершен запрос листинга. В приведенном выше примере ответа отметьте, что finished имеет значение false. Вы можете продолжать запрашивать API для этого запроса листинга до тех пор, пока finished не станет истиной, тогда сводные данные должны быть доступны. Затем вы можете использовать конечные точки /flowfile-queues/{id}/flowfiles/{flowfile-uuid} и /flowfile-queues/{id}/flowfiles/{flowfile-uuid}/content для получения атрибутов и содержимого каждого файла потока.

...