npm 包 node-red-contrib-deduplicate-msg 使用教程

阅读时长 5 分钟读完

简介

node-red-contrib-deduplicate-msg 是一个利用 Node-RED 实现的 npm 包,可以用于过滤掉重复的消息。这个 npm 包的优点在于,可以支持自定义重复条件但也可以使用默认配置进行使用,而且可以在 Node-RED 上得以更好的应用。本文将详细介绍 node-red-contrib-deduplicate-msg 的使用方法,包含示例代码。

安装

在安装 Node-RED 之后,使用以下命令安装 npm 包:

或者在 Node-RED 的 Manage Palette 中搜索该包,直接进行安装。

使用方法

在 Node-RED 中,需要将 node-red-contrib-deduplicate-msg 放入流程中。然后,就可以将输入的消息连接到该节点,并将输出的消息连接到下一个流程的节点上。

1. 默认配置

node-red-contrib-deduplicate-msg 不附加条件时,它会将发送到输入端口(左侧)的所有消息重复检查后,丢弃掉已经曾经出现过得到消息,只保留第一次收到的消息,并发送到输出端口(右侧)。

2. 自定义配置

使用者可以轻松地配置重复条件,在不同场景下,可以使用不同的条件,以达到更好的过滤效果。

2.1. 以属性为条件

如果消息的属性与之前消息的属性值相同,则认为这两个消息是重复的。比如我们要过滤相同的 IP 地址,那么我们可以使用以下属性:

其中 msg.payload.ip 是要过滤的 IP 地址,以此为条件进行重复消息的过滤。

2.2. 以完整消息为条件

过滤器可以使用 msg 对象自己完成去重。例如,我们只需要考虑要过滤的数据本身,那么我们可以使用如下配置:

2.3. 自定义 JavaScript 函数

如果以上两种方法无法满足需求,那么 node-red-contrib-deduplicate-msg 允许使用自定义 JavaScript 函数进行消息重复检查。

在以上的 JavaScript 代码中,如果要过滤的消息的 payload 值大于 100,那么我们就保留该消息(返回 true),否则就将该消息过滤掉(返回 false)。

示例代码

下面是一个简单的 Node-RED 流程拓扑图及相应代码。

-- -------------------- ---- -------
-
    -
        ----- -----------------
        ------- ---------
        ---- ------------------
        ------- ---
        -------- ---
        ---------- ---------------------------------------------
        -------------- -------
        --------- ---
        ---------- ---
        ------- ------
        ------------ ----
        ---- ----
        ---- ----
        -------- -
            -
                -----------------
            -
        -
    --
    -
        ----- ------------------
        ------- ------------------
        ---- ------------------
        ------- ---
        --------- ---------
        ---- ----
        ---- ----
        -------- -
            -
                -----------------
            -
        -
    --
    -
        ----- ------------------
        ------- --------
        ---- ------------------
        ------- ---
        --------- -----
        ------------ -----
        ---------- ------
        ----------- ------
        ----------- --------
        ------------ ---
        ------------- -------
        ---- ----
        ---- ----
        -------- --
    -
-
展开代码

该示例使用了默认的 Filter 规则,即对比消息的完整内容,防止消息的内部完全一致时的重复。当一个消息首次接收到,并进入到 deduplicate-msg 节点后,该消息将保留,随后所有完全相同的消息都将被丢弃,并不会发送到 debug 节点。

总结

node-red-contrib-deduplicate-msg 是一个非常实用且易于使用的 npm 包。它可以轻松地将重复的消息过滤掉,简化了整个流程的复杂度和混乱度。阅读本文后,希望大家已经学会了如何安装、使用和配置该 npm 包,并能够在实际生产环境中灵活应用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600673e0fb81d47349e53d1e

纠错
反馈

纠错反馈