Работа с очередями в Apache NiFi

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

Работу очередей продемонстрируем на простом примере DataFlow, создание которого было описано в статье Создание простого DataFlow в NiFi. На схеме видно, что на каждом соединении присутствует информация об очереди.

Очереди в DataFlow Apache NiFi

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

  1. Запустить все процессоры, кроме PutFile.
  2. Скопировать тестовый файл sample.txt в /tmp/data/input. Выполнить копирование 5 раз подряд (то есть, чтобы процессор GetFile забрал 5 файлов). Видно, что количество элементов в очереди выросло до 5. Они не могут быть обработаны, так как компонент PutFile остановлен.

    Элементы в очереди Apache NiFi.
  3. Чтобы просмотреть содержание очереди нужно кликнуть на очередь правой кнопкой мыши и выбрать пункт «List Queue».

    Просмотр очереди Apache NiFi.
  4. Откроется список элементов очереди. Как видно из нашего примера, в очереди находятся 5 одинаковых файлов, отправленных в поток на шаге 2. Нажав на иконку «i» (первый столбец в таблице), можно посмотреть свойства и содержимое файлов.

    Список элементов очереди Apache NiFi.
  5. Если запустить процессор PutFile, то все 5 файлов из очереди будут успешно обработаны. Но в нашем эксперименте мы очистим очередь. Для очистки очереди нужно кликнуть на очередь правой кнопкой мыши и выбрать пункт «Empty Queue».

    Очистка очереди Apache NiFi.
  6. В диалоге подтверждения нажать кнопку «EMPTY».

    Подтверждение операции очистки очереди Apache NiFi.
  7. В появившемся окне с результатами удаления очереди нажать кнопку «ОК».

    Сообщение с результатами очистки очереди Apache NiFi.

В описанном выше примере очередь была создана искусственно. Но очереди могут скапливаться и по вполне естественным причинам. Например, если скорость поступления элементов в процессор сильно превышает скорость работы процессора, то очередь накопится очень быстро. Существуют способы для эффективного управления очередями, они будут описаны в отдельных статьях.

При копировании материалов ссылка на сайт обязательна. Вопросы, замечания, предложения и комментарии к статьям можно направлять на адрес: info@datanetworks.ru