策略一: Immediate Re-queueing
這種方式主要是Consumer處理訊息失敗時, 再把訊息送回去重新排隊, 在RabbitMQ的架構下非常簡單, 只要在Error Handling的地方發送nack訊號回去即可。
這種方式雖然簡單, 但是也存在著一些風險:
- 由於Queue為了確保順序性, 因此該訊息會被重新排到最前面, 如此一來該訊息如果真的是一個錯誤的資料, 那麼會造成阻塞, 讓後面的訊息無法被正確的處理。
- 假設失敗原因是系統繁忙的話, 一直不斷的進行重試反而會再度拖累系統。
策略二: Dead Letter Exchange