Error handling Nifi:将文件发送到HDFS;如果失败,请等待一秒钟,然后重试

Error handling Nifi:将文件发送到HDFS;如果失败,请等待一秒钟,然后重试,error-handling,expression,etl,apache-nifi,Error Handling,Expression,Etl,Apache Nifi,作为Nifi中ETL过程的一部分,我需要向HDFS发送一些文件。需要的是检查是否存在故障。如果是,则需要等待一秒钟,然后重试。如果失败,它将再次等待一秒钟,然后重试。最后,如果失败,它将发送一封电子邮件给我和另一个管理员。最后一部分很简单,我只是让它去一个“PutEmail”处理器。对于重试,我按照本文进行了设置: 但是,它不会在每次重试之前等待。我想添加一个类似于${now():plus(1000)}的表达式,但它需要一个布尔表达式。有没有可能用布尔的方式表达同样的想法?还是我需要放弃这一点,

作为Nifi中ETL过程的一部分,我需要向HDFS发送一些文件。需要的是检查是否存在故障。如果是,则需要等待一秒钟,然后重试。如果失败,它将再次等待一秒钟,然后重试。最后,如果失败,它将发送一封电子邮件给我和另一个管理员。最后一部分很简单,我只是让它去一个“PutEmail”处理器。对于重试,我按照本文进行了设置:


但是,它不会在每次重试之前等待。我想添加一个类似于
${now():plus(1000)}
的表达式,但它需要一个布尔表达式。有没有可能用布尔的方式表达同样的想法?还是我需要放弃这一点,找到一种不同的方法?提前感谢您的帮助。

请尝试
ControlRate
为此,您可以将吞吐量配置为每秒1个流文件,或者根据分组属性调整设置以允许多个流文件通过,例如,如果您一次在队列中获得5个失败的流文件,如果每秒“全局”发送1个流文件,则需要5秒钟。如果您的用例说您只需要将每个流文件延迟1秒(意味着在1秒之后,所有5个流文件都会被发送),我相信您也可以设置属性来支持这一点


另一种解决方案是脚本处理器,您可以一次读取(可配置)数量的流文件,然后延迟一秒钟,然后传输所有流文件。

尝试
ControlRate
为此,您可以将吞吐量配置为每秒1个流文件,或者根据分组属性调整设置以允许多个流文件通过,例如,如果您一次在队列中获得5个失败的流文件,则如果您每秒“全局”发送1个流文件,则需要5秒钟。如果您的用例说您只需要将每个流文件延迟1秒(意味着在1秒之后,所有5个流文件都会被发送),我相信您也可以设置属性来支持这一点

另一种解决方案是脚本处理器,您可以一次读入(可配置)数量的流文件,然后延迟一秒钟,然后传输所有流文件