據我瞭解,如果我發送200 OK頭,我的AWS彈性beanstalk Worker訂閱SQS隊列應自動刪除消息。Amazon AWS Worker不會刪除SQS隊列中的消息
工作環境中的Web應用程序只應偵聽本地主機上的 。當工作環境中的Web應用程序返回 時,確認已收到200 OK響應併成功處理請求 ,守護程序將DeleteMessage調用發送到SQS隊列,以便將消息從隊列中刪除。 (SQS 會自動刪除已在隊列中的消息,比配置的RetentionPeriod長 。)如果應用程序返回任何 響應而不是200 OK,則Elastic Beanstalk將等待將 消息放回配置的VisibilityTimeout後的隊列中 期間。如果沒有響應,則Elastic Beanstalk將等待在InactivityTimeout期間之後將消息放回到隊列中,以便 該消息可用於另一次處理嘗試。
但是我沒有這樣做。他們正在處理好並將他們正在編碼的視頻保存到正確的S3存儲桶中。但他們不會像他們應該那樣刪除隊列項目。
我試圖發送頭各種方式,包括...
http_response_code(200);
header("HTTP/1.1 200 OK");
header("HTTP/1.1 200 OK", true, 200);
我的頁面上沒有輸出,但試圖調用ob_start();在開始和ob_end_flush();在發送標題之後,甚至在任何處理之前嘗試在開始時直接執行標題。沒有任何工作,消息仍然在飛行中,並在可見性超時結束後重新發送。
我不能想出其他任何東西來刪除這些消息 - 工作人員(我認爲)只接收郵件正文,所以我甚至不能把事情交給我自己的手,並通過使用API的處理程序刪除郵件。
幫助!
謝謝。
你正在拉消息還是你有消息推送給你? – datasage
你好datasage。它們被守護進程推送給工作者,我用$ postBody = file_get_contents('php:// input')接收它們; –