使用選用的 HTTP 結尾標頭來啟用多部分 Gremlin 回應 - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用選用的 HTTP 結尾標頭來啟用多部分 Gremlin 回應

根據預設,對 Gremlin 查詢的 HTTP 回應會以單一 JSON 結果集傳回。如果結果集非常大,這可能會導致資料庫執行個體上發生 OutOfMemoryError 例外狀況。

不過,您可以啟用「區塊」回應 (以多個個別部分傳回的回應)。您可以在請求中包含轉移編碼 (TE) 尾端標頭 (te: trailers) 來執行此操作。如需 TE 標頭的詳細資訊,請參閱有關 TE 請求標頭的 MDN 頁面

當回應以多個部分傳回時,很難診斷在收到第一個部分之後發生的問題,因為第一部分送達時,HTTP 狀態碼為 200 (OK)。後續失敗通常會產生包含損毀回應的訊息內文,而 Neptune 會在此內文結尾處附加錯誤訊息。

為了更輕鬆地偵測和診斷此類失敗,Neptune 還會在每個回應區塊的結尾標頭內包含兩個新的標頭欄位:

  • X-Neptune-Status – 包含回應碼,後面接著簡短名稱。例如,若成功,結尾標頭將是:X-Neptune-Status: 200 OK。若失敗,回應代碼將是其中一個 Neptune 引擎錯誤代碼,例如 X-Neptune-Status: 500 TimeLimitExceededException

  • X-Neptune-Detail – 對於成功的請求而言是空的。若發生錯誤,它會包含 JSON 錯誤訊息。由於 HTTP 標頭值中只允許 ASCII 字元,因此 JSON 字串會進行 URL 編碼。

注意

Neptune 目前不支援對區塊回應進行 gzip 壓縮。如果用戶端同時要求區塊編碼和壓縮,Neptune 會略過壓縮。