如何为NiFi的InvokeHTTP处理器配置指定重试次数及失败通知
NiFi 实现API拉取失败重试+邮件通知方案
步骤1:配置InvokeHTTP的自动重试规则
打开InvokeHTTP处理器的配置界面,在属性标签栏调整以下参数:
Maximum Number of Retries:设置为3,即拉取失败后自动重试3次Retry Timeout:按需设置重试间隔,例如填写10 sec代表两次重试之间间隔10秒- 其余API地址、请求方法、请求头、认证信息等参数按你原有拉取需求正常配置即可
步骤2:路由失败请求
InvokeHTTP处理器自带多个输出关系,重试3次后仍然失败的请求会自动进入Failure关系,你只需将Failure关系的流连接到邮件发送处理器即可:
- 拖拽连接
InvokeHTTP和后续的PutEmail处理器时,在弹出的关系选择框中仅勾选Failure选项 - 其他正常业务关系(拉取成功的
Response、原始触发流Original等)按你后续的数据处理逻辑正常路由,无用的关系记得设置为自动终止,避免FlowFile积压
步骤3:配置邮件通知处理器
使用PutEmail处理器实现失败通知发送,核心配置如下:
SMTP Hostname:填写发件邮箱的SMTP服务地址,例如QQ邮箱为smtp.qq.com,163邮箱为smtp.163.comSMTP Port:按邮箱服务商要求填写,开启TLS加密时通常为465或587SMTP Username:发件人邮箱账号SMTP Password:发件人邮箱的SMTP授权码(注意不是邮箱登录密码,需在邮箱后台单独开启SMTP服务后获取)From:发件人邮箱地址To:收件人邮箱地址,多个收件人用英文逗号分隔Subject:邮件标题,支持NiFi表达式语言注入动态信息,例如可填写*API拉取失败通知* 接口地址:${invokehttp.request.url}Content:邮件正文,可按需加入错误相关的动态属性,例如错误状态码:${invokehttp.status.code},错误信息:${invokehttp.status.message},以上属性都是InvokeHTTP执行失败后自动生成的,可直接调用
可选优化
如果需要留存失败请求的上下文信息,可在InvokeHTTP的Failure关系和PutEmail之间加入LogMessage处理器,将错误信息打印到NiFi后台日志便于后续排查。
内容的提问来源于stack exchange,提问作者Bishwaroop Dey
相关产品推荐
相关产品推荐

