是否可以调试Apache Nifi自定义处理器?

时间:2019-04-23 12:37:54

标签: java eclipse apache-nifi

我能够在Eclipse中远程调试apache nifi自定义处理器(参考:123)。我遵循的步骤是这样的:

  1. 在apache nifi bootstrap.conf中的行下方取消注释

    java.arg.debug=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
    
  2. 启动apache nifi

  3. 使用host=localhostport=8000在eclipse中创建新的调试配置,然后选择自定义处理器的项目。

因此,我能够将变量悬停,添加监视并逐步执行等。但是,一旦获得提示并想要更改一些代码并快速尝试,该怎么办?我是否需要更改代码,重建nar,停止apache nifi,将nar放入apache nifi lib中,然后重新启动apache nifi。每次更改代码时,我都必须遵循这条漫长的道路吗?还是我想念什么?我尝试通过更改代码并保存它。但是当我执行Ctrl + S时,它显示我无法热插拔代码更改屏幕:

enter image description here

3 个答案:

答案 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)并打开右上方锤子符号旁边的下拉“编辑运行/调试配置对话框”。

点击编辑配置选项

打开下面的窗口

enter image description here

点击左上角的加号(+),会出现一个下拉菜单,选择遥控器

enter image description here

出现以下画面

enter image description here

在NiFi的bootstrap.conf文件中配置你提到的端口,假设我们已经配置了8000那么我们需要将端口更改为8000

enter image description here

点击应用,然后点击确定按钮

现在将调试点放在您编写的自定义类上,然后单击右上角的 Nifi 上的调试图标

enter image description here

您将看到如下所示的控制台

enter image description here

现在在您选择的浏览器上打开您的 Nifi,然后启动您的自定义处理器(在浏览器上),然后一旦您的处理器开始运行,IntelliJ 上的调试点就会命中,您可以开始调试您的自定义处理器

答案 2 :(得分:0)

除了Bryan的答案外,您还可以将ExecuteScript处理器与Groovy结合使用(如果愿意,可以编写纯Java语言)来缩短“实时测试”反馈周期。您:

  1. 直接在处理器主体中编写代码
  2. 运行处理器
  3. 评估成功
  4. 停止处理器
  5. 修改代码
  6. 重新启动

重复此循环,直到获得您相当满意的代码为止,然后将其转换为自定义处理器。正如Bryan指出的那样,您的单元测试应该很好地涵盖内部行为,但这将减少周期之间的部署时间。

我做了一个presentation on custom processor development可能也有帮助。