微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NiFi中的重试和失败队列优先级

如何解决NiFi中的重试和失败队列优先级

我在NiFi有一个队列,其中包含将通过API查询(invokeHTTP)处理的项目。可以处理这些项目,并正确返回数据的答案(状态200),找不到(状态404)以及失败(状态500)。 但是,在状态404和500的情况下,可能会出现错误的否定情况,因此,如果我再次查询相同的数据并给出了错误,则它会返回状态200。但是在某些情况下,确实存在故障,而不是假阴性。

enter image description here

因此,我创建了一个重试和失败队列,让他们再次输入involeHTTP并查询API。我设置了5分钟的到期时间,以便真正出错的数据不会永远咨询该API。

但是,我想优先处理此故障并重试队列,以便在数据到达时,将在标准处理队列之前在API中再次对其进行查询,以免丢失那些给出了假阴性。

是否可以通过这种自我关系进行这种治疗,或者您需要一个新的流文件

解决方法

每个队列可以在队列的设置上配置优先级。当前,您有两个单独的InvokeHttp队列,分别是EvaluateJsonPath的匹配关系中的失败/重试队列和传入队列。您需要在InvokeHttp前面放置一个程序,并将这两个队列发送到程序,然后将程序发送到InvokeHttp。这样,您可以为InvokeHttp创建单个传入队列,并在那里配置优先级排序器。

为了正确地对其进行优先级排序,您可能需要使用“流文件属性”优先级排序器。您将使用UpdateAttribute在每个流文件中添加一个“优先级”属性,用于失败/重试的优先级属性将获得优先级“ A”,其他优先级将获得优先级“ B”(或在A之后排序的任何内容)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。