2016-04-29 134 views
4

發生移動到死信隊列的錯誤,我已經使用NPM包,比如試圖SQS隊列並行& SQS-消費者對節點消耗SQS的消息AWS SQS:當消費者

但最近我有機構在當對於特定的消息發生錯誤時的處理,它應該被移到死信隊列

但截至目前其不斷重試的最大消息接收計數倍

是否有可能與其他一些NPM包,分別爲每當發生錯誤時,應將其直接移至死信隊列中?

回答

0

你不需要使用新的NPM爲它,當你完成處理的消息會自動發生。例如,如果您已經使用節點消費者,當您與消息完成你做:

done() //in order to remove from queue due to for success probably 

done(err) //in order to keep in queue 

所以現在爲了從隊列中移動消息,你不需要死信隊列做任何事情在你的代碼,但只有在你SQS控制檯管理器:

  1. 創建一個新的隊列
  2. 稱之爲死的消息(或其他)
  3. 將「Maximum Receives」值設置爲1(這意味着在一次調用 「done(error)」後,消息將從您的隊列中移除並進入死隊列。
  4. 刷新!!!!
  5. 回到你的源隊列(原)
  6. 去配置隊列
  7. 集中獲取政策
  8. 把你給了死信隊列

這就是它的名字!祝你好運,我不得不說sqs是擴展任務的好方法。

2

知道這有點遲,但認爲OP正試圖尋求動態的政策。 I .: .:

  • 對正常錯誤 - >重試根據redrive-policy。
  • 但是,對於某些故障,您可能知道即使嘗試了一百個項目,也無法恢復。在這種情況下 - >將消息直接移動到死信隊列中。

如果大概是什麼問,怎麼做後者。

答案可能是手動將消息複製到死信隊列(它的行爲就像任何其他隊列那樣),然後從源隊列中刪除消息。

不要相信有一種「特殊」的方式來做到這一點。