AWS之SQS訊息佇列使用經驗

2021-08-26 15:15:26 字數 740 閱讀 9483

1、問:什麼是可見性超時?

可見性超時是乙個時段,在這個時段內,amazon sqs 會阻止其他處理元件接收和處理某條訊息。有關更多資訊,請參閱 amazon sqs 開發人員指南中的可見性超時。

這個特性,在工作當中,我們可以提高基於sqs訊息服務的併發能力。比如有1000個sqs client在監聽同乙個訊息佇列,因為每個訊息內容不一樣,而且可見期間,只能被乙個client拿走處理,這就成功避免了併發出現會重複處理的問題。同時在處理期間,其他client不可見,也就是無法處理這個訊息(即使拿走訊息的那個client並沒有成功處理掉,並ack回來),這樣多個client就像一群狼,在相互合作各自捕捉處理一些羊群。

2、問:amazon sqs 如何允許多個讀取者訪問同一訊息佇列,而不會丟失訊息或重複處理訊息?

每個 amazon sqs 佇列都具有可配置的可見性超時。當系統從佇列中讀取一條訊息時,任何其他讀取者在指定時間都看不到該訊息。只要訊息的處理時間短於可見性超時,則每條訊息就都會得以處理並被刪除。

如果處理訊息的元件出現故障或不可用,那麼可見性超時結束後,讀取訊息佇列的任何元件就可以再次看到該訊息。這可以讓多個元件從同一訊息佇列中讀取訊息,並且每個元件負責處理不同的訊息。

3、問:訊息最長可見性超時時間是多少?

amazon sqs 訊息的最長可見性超時時間為 12 小時。這個時長的設定,可以根據client的處理能力,以及我們認為的timeout時間來設定。

利用sqs的可見性,可以多起幾個程序,併發處理任務。提高吞吐量。

訊息佇列之訊息過濾

眾所周知,rocketmq是支援訊息過濾的,即傳送訊息時,可以給訊息設定乙個tag。訂閱主題的時候,可以設定只消費攜帶某些tag的訊息,起到訊息過濾的作用。rocketmq中是把訊息tag通過雜湊轉換成了的long型,儲存在了訊息索引中。在訂閱客戶端拉取訊息時,為了減少協議大小,減低報文長度,拉取協...

Linux IPC 之訊息佇列

system v or posix 該使用哪個呢,這是個問題 相對而言,我更傾向於後者 posix mq posix mq 的概況看這裡 man mq overview 簡單的實現 include include include include define my mq name my test m...

linux IPC之訊息佇列

訊息佇列就是乙個訊息的鍊錶。可以把訊息看作乙個記錄,具有特定的格式以及特定的優先順序。對訊息佇列有寫許可權的程序可以向其中按照一定的規則新增新訊息 對訊息佇列有讀許可權的程序則可以從訊息佇列中讀走訊息。在linux系統中訊息佇列與鍵值一一對應。訊息佇列是通過鍊錶管理的,核心提供乙個struct ms...