Можно ли отлаживать пользовательский процессор apache nifi? - PullRequest
1 голос
/ 23 апреля 2019

Я могу удаленно отлаживать пользовательский процессор apache nifi в eclipse (ref: 1 , 2 , 3 ).Следующие шаги выглядят примерно так:

  1. Раскомментируйте ниже строки в apache nifi bootstrap.conf

    java.arg.debug=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
    
  2. Запустите apache nifi

  3. Создайте новую конфигурацию отладки в eclipse с помощью host=localhost, port=8000 и выберите проект собственного процессора.

Так что я могу навести переменные, добавьте часы и сделайте шаг вперед и т. д. Однако, как только я получу подсказку и захочу изменить код и быстро попробовать, что можно сделать?Нужно ли мне изменить код, пересобрать nar, остановить apache nifi, поместить nar в apache nifi lib и затем перезапустить apache nifi.Должен ли я идти по этому длинному пути каждый раз, когда делаю какие-либо изменения в коде?Или я что-то упустил?Я попытался изменить код и сохранить его.Но в тот момент, когда я нажимаю Ctrl + S, он показывает, что я не могу изменить код горячей замены:

enter image description here

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

Да, вам нужно перестроить и заново развернуть NAR, как вы описали. Как правило, вам не нужно отлаживать слишком часто, потому что вы должны разрабатывать процессор, используя модульное тестирование, построенное на фальшивом тестовом фреймворке NiFi, и у вас будет довольно хорошая идея, что процессор будет работать еще до того, как его запустят. Тогда удаленная отладка действительно необходима только для необычных случаев, которые не могут быть смоделированы в модульном тесте.

0 голосов
/ 23 апреля 2019

В дополнение к ответу Брайана вы можете использовать процессор ExecuteScript с Groovy (вы можете писать на чистой Java, если хотите), чтобы сократить этот цикл обратной связи «живого тестирования».Вы:

  1. пишете код непосредственно в теле процессора
  2. запускаете процессор
  3. оцениваете успех
  4. останавливаете процессор
  5. изменить код
  6. запустить его снова

Повторять этот цикл до тех пор, пока у вас не будет достаточно кода, которым вы довольны, а затем перевести его на пользовательский процессор.Как отмечает Брайан, ваши юнит-тесты должны довольно хорошо покрывать внутреннее поведение, но это сократит время развертывания между циклами.

Я сделал презентацию по разработке собственного процессора , которая также может помочь.

...