2017-05-08 37 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建議(滾動找到他的回覆)。看起來不那麼凌亂。我希望處理器在進程組級別有重試/超時選項,甚至是全局的。