2017-05-08 131 views
1

例如,调用HTTP处理器,如果重试关系连接到自身,如果发生500次相关错误,如何控制重试次数?如何在nifi中控制调用HTTP处理器的重试次数

我想控制重试的次数,直到某些计数。 5,并在特定时间重试。第一次在1分钟后重试,第二次在30分钟后的第二次24小时之后,就像我想要做的那样。

回答

1

有一个开放的Jira案例(NIFI-90)讨论了自动惩罚和补偿。与此同时,如果您想实现自己的回退,您可以将重试关系发送到最终会被路由回InvokeHttp处理器的流(或者在重试次数达到最大值时丢弃)。退避周期可以是这样的:

InvokeHttp -[retry]-> UpdateAttribute -> RouteOnAttribute -[give up]-> (Drop) 
^            | 
|            v 
|------------------------------------------ (Delay) 
  1. UpdateAttribute:设置/递增“计数器/重试”的属性和/或相关 “延迟量”属性。
  2. RouteOnAttribute:检查计数器以查看是否已达到最大重试次数(例如5),如果是,则将流文件发送到(丢弃),否则继续。 (丢弃)处理器可以是UpdateAttribute或自动终止其传出关系或某些错误处理/报告逻辑的东西。
  3. (延迟):这可能是一个ExecuteScript处理器,它根据当前的重试计数和/或延迟量延迟流文件的传输。或者,您可以使用ControlRate,但是您可以通过反转“延迟量”来相应地设置ControlRate的属性(使用先前的UpdateAttribute来增加速率控制属性的值)。
0

我真的很喜欢this solution,由Alessio Palma建议(滚动找到他的回复)。看起来不那么凌乱。我希望处理器在进程组级别有重试/超时选项,甚至是全局的。