我能够在Eclipse中远程调试apache nifi自定义处理器(参考:1,2,3)。我遵循的步骤是这样的:
在apache nifi bootstrap.conf中的行下方取消注释
java.arg.debug=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
启动apache nifi
使用host=localhost
,port=8000
在eclipse中创建新的调试配置,然后选择自定义处理器的项目。
因此,我能够将变量悬停,添加监视并逐步执行等。但是,一旦获得提示并想要更改一些代码并快速尝试,该怎么办?我是否需要更改代码,重建nar,停止apache nifi,将nar放入apache nifi lib中,然后重新启动apache nifi。每次更改代码时,我都必须遵循这条漫长的道路吗?还是我想念什么?我尝试通过更改代码并保存它。但是当我执行Ctrl + S时,它显示我无法热插拔代码更改屏幕:
答案 0 :(得分:2)
是的,您需要按照描述重新构建和重新部署NAR。通常,您不必经常调试,因为您应该使用由NiFi的模拟测试框架构建的单元测试来开发处理器,并且您将有一个很好的主意,那就是处理器将在运行之前就可以正常工作。然后,只有在无法在单元测试中模拟的异常情况下,才真正需要远程调试。
答案 1 :(得分:1)
是的,我们可以调试自定义 Nifi 处理器。使用任何代码编辑器对您的自定义处理器进行编码,创建 nar 文件并将该 nar 文件复制到您的 NiFi 设置所在的 lib 目录。
转到 NiFi 设置中的 conf 目录并搜索文件 bootstrap.conf。
在任何可用的编辑器中打开 bootstrap.conf 文件并取消注释以下行
java.arg.debug=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
您可以根据您的系统更改端口可用性。
现在进入你的代码编辑器(这里是 IntelliJ)并打开右上方锤子符号旁边的下拉“编辑运行/调试配置对话框”。
点击编辑配置选项
打开下面的窗口
点击左上角的加号(+),会出现一个下拉菜单,选择遥控器
出现以下画面
在NiFi的bootstrap.conf文件中配置你提到的端口,假设我们已经配置了8000那么我们需要将端口更改为8000
点击应用,然后点击确定按钮
现在将调试点放在您编写的自定义类上,然后单击右上角的 Nifi 上的调试图标
您将看到如下所示的控制台
现在在您选择的浏览器上打开您的 Nifi,然后启动您的自定义处理器(在浏览器上),然后一旦您的处理器开始运行,IntelliJ 上的调试点就会命中,您可以开始调试您的自定义处理器
答案 2 :(得分:0)
除了Bryan的答案外,您还可以将ExecuteScript
处理器与Groovy结合使用(如果愿意,可以编写纯Java语言)来缩短“实时测试”反馈周期。您:
重复此循环,直到获得您相当满意的代码为止,然后将其转换为自定义处理器。正如Bryan指出的那样,您的单元测试应该很好地涵盖内部行为,但这将减少周期之间的部署时间。
我做了一个presentation on custom processor development可能也有帮助。