使用可选的 HTTP 尾随标头启用由多部分组成的 Gremlin 响应 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用可选的 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 会跳过压缩。