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