集成

Apache NiFi

qianmoQqianmoQ· 更新于 2026-10-01· 阅读 12 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Apache NiFi 允许围绕数据流(data-stream)这一概念来创建处理数据的系统。

Apache PLC4X 同时提供 Source 和 Sink 处理器,用于从 PLC 中读取数据或向其写入数据。

PLC4X 同时支持 NiFi 的两代产品,分别由两组独立的模块提供:

NiFi 版本模块nar 构件
NiFi 1.xplc4j/integrations/apache-nifi/nifi-1plc4j-nifi-plc4x-nar
NiFi 2.xplc4j/integrations/apache-nifi/nifi-2plc4j-nifi-2-plc4x-nar

设置 NiFi

请使用你所运行的 NiFi 版本所要求的 Java 版本——NiFi 1.x 可运行于 Java 8、11、17 或 21,NiFi 2.x 则要求 Java 21 或更高版本。

一旦你通过 nifi.sh run 或 run-nifi.bat 启动了 NiFi,其 Web 界面应可通过以下地址访问:http://localhost:8080/nifi/

Web 界面可能需要几秒钟才会显示……因此如果浏览器中出现错误,请稍等片刻让它完成启动。

在 NiFi 中启用 PLC4X 处理器

要在 Apache NiFi 中启用 Apache PLC4X 支持,你只需将我们的 nar 归档文件复制到 NiFi 安装目录的 lib 目录中即可。

你可以自行从 plc4x-extras 仓库构建 nar,然后从对应的 nar 模块的 target 目录中获取:

  • NiFi 1.x:plc4j/integrations/apache-nifi/nifi-1/nifi-plc4x-nar/target
  • NiFi 2.x:plc4j/integrations/apache-nifi/nifi-2/nifi-2-plc4x-nar/target

或者你也可以从 Maven 中央仓库下载已发布的版本:plc4j-nifi-plc4x-nar / plc4j-nifi-2-plc4x-nar

空的 NiFi 流程

在 NiFi 中使用 PLC4X 源处理器

将一个 PLC4X 源处理器添加到画布上:点击 Add processor 按钮,然后将其拖拽到画布中。

添加处理器

此时会弹出一个窗口,其中列出了所有可用的处理器。

在搜索框中输入 PLC4X,选中 Plc4xSourceProcessor,然后点击 Add(我想你也可以双击该处理器)

PLC4X 处理器列表

如果你点击某个处理器,要看出它已被选中可能有点困难,因为选中状态没有高亮显示。不过,你可以通过底部显示的名称来确认当前选中了哪个处理器。

新的处理器添加到画布后,你需要对它进行配置。双击它(或者右键点击并选择 Configure)即可打开配置窗口。

在这里你需要提供一个 PLC4X connection string 和一个 PLC resource address String。

PLC connection String 就是一条普通的 PLC4X 连接字符串。关于如何使用所支持的各种连接类型,请参阅相关文档 ](https://plc4x.apache.org/plc4x/latest/users/protocols/index.html)

PLC resource address String 是一个以 ; 分隔的 name-value-pairs 列表,其中每个 name 都被赋予一个 plc4x addrress。

关于你所使用的驱动对应的地址字符串的格式,请查阅该驱动的文档 ](https://plc4x.apache.org/plc4x/latest/users/protocols/index.html)

示例:

PLC connection String: s7://192.168.23.30
PLC resource address String: time-value=%DB2:8:TIME;string-value=%DB2:30.0:STRING(10)

已配置的 plc4x 源处理器

在保存处理器之前,还需要设置一项。请切换到 Scheduling 标签页,并将 Run Schedule 设置为 1 或 2 秒。

配置调度

如果不这样做,NiFi 将不断向 PLC 发送请求,以我的 S7 为例,它很快就会开始拒绝接受新连接。

顶部仍会显示 Invalid,但这与您的输入无关,更多的是因为该处理器会产生两个数据流:SUCCESS 和 FAILURE。接下来需要将它们连接起来。

完成后,点击 Apply。

但在执行此操作之前,我们需要添加一个可以连接它们的对象。

因此,我们只需在画布上再添加一个处理器:使用 LogMessage 处理器。它会将每一条数据都记录到 NiFi 日志系统中。

由于 LogMessage 处理器在每条日志消息被记录时都会生成一个事件流,我们需要将其配置为自动终止该关系。方法是双击该处理器并选择 Settings 标签页。然后在 Automatically Terminate Relationships 部分中勾选标记为 SUCCESS 的复选框,最后点击 Apply。

已配置的日志处理器

现在我们可以连接这两个处理器。

当鼠标悬停在 Plc4xSourceProcessor 上时,是否注意到了 arrow-icon?点击它并开始拖动。您会发现现在有一个连接,只需将其拖到日志处理器上即可。当在那里释放连接时,两个处理器就连接在一起了。

释放鼠标后,会弹出一个窗口,允许您配置该连接。通常可以选择要连接哪些数据流。

在本例中,我们只需将 SUCCESS 和 FAILURE 数据流连接到日志处理器。

配置连接

完成后,您的流配置就全部完成了。

已配置的流

最后要做的是启动这些处理器。目前它们处于停止状态(可通过红色方块图标看出)。

方法是右键单击这两个处理器并选择 Start。

现在您应该能在 PLC4X Source 的 Out 上看到不断增加的数字,以及在 Logging Processor 的 In 上看到相应的数字。

运行中的流

启用调试

为了能够调试 PLC4X,请编辑 bin/nifi.sh(在 Mac 和 Linux 上)并取消注释以下行:

BOOTSTRAP_DEBUG_PARAMS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000"

对于 Windows,你需要手动添加:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

的 run-nifi.bat 文件 JAVA_ARGS 中。

如果您希望 NiFi 在启动时暂停,以确保捕捉到整个执行过程,只需将 suspend=n 改为 suspend=y。这样 NiFi 会一直暂停,直到有远程调试会话连接为止。

评论

登录后参与评论

正在加载评论…