2016-07-18 80 views
0

我有一個應用程序,即從亞馬遜SQS讀取事件。我遇到的問題是,當我部署一個更新的應用程序版本時,它會連接到相同的隊列,所以有兩個堆棧 - 舊消息和新消息。SQS流量平衡

我想保持原來的堆棧消耗的消息說,只有5%的新的95%,所以我可以做現場測試。當我有信心,新版本沒有問題時,我關閉舊堆棧並使新堆棧消耗100%的事件。

唯一的解決辦法,我現在看到的是落實在應用方面的一些功能,例如一些REST端點,以控制它應該多少SQS消息嘗試讀取。 但是,可能有一些其他解決方案/工具來解決這個問題。 (其實,有幾個應用程序,所以如果我能解決這個問題,而不觸及所有的人,這將是巨大的)

一般來說,你如何應對新版本的部署和SQS讀書?

感謝

回答

0

假設有兩個應用程序堆棧:S1,它需要處理90%的消息,和S2的10%。

這是他們可以做什麼:

  • 他們將有兩種配置:n_messages_to_getn_messages_to_process。對於S1,值分別爲10和9。分別爲S2,10和1。
  • 每個將從SQS中取n_messages_to_get,但只處理其中的n_messages_to_process

您也可以考慮在DynamoDB等數據庫中配置此配置,以便在您需要撥號或關閉時不必部署代碼。製成

假設:

  • S1和S2大約需要同時處理的消息。
  • 您可以容忍兩者處理的郵件數量存在一些偏差。例如,如果S1處理87%的消息和S2 13%,那麼你會好的。