本页面介绍了如何解决载荷解封的问题。
HTTP 状态代码错误
使用载荷解封时,可能会出现常见的 HTTP 状态代码错误。您可以使用 push_request_count
指标监控错误。
400 请求错误
当 Pub/Sub 因配置错误或数据缺失而无法处理请求时,会发生以下错误。
400 Bad Request
导致此错误的原因有很多。以下是导致此错误的一些最常见原因:
- 载荷(消息数据)与 HTTP 端点指定的预期请求格式不匹配。
- 缺少处理请求所需的标头。
- 为订阅配置了错误的 HTTP 端点。
如需解决此问题,请尝试以下解决方案:
- 检查载荷(消息数据)的格式。请确保它与 HTTP 端点指定的预期请求格式匹配。
- 检查请求是否包含所需的标头。如果缺少标头,您可能需要在消息属性中添加标头。示例可能包括
Content-Type
,但也可能是必要的。 - 确认您的订阅配置的 HTTP 端点有效。
- 在推送订阅上启用死信队列 (DLQ)。这会重定向无法传送的个别消息。如果您看到少量想要检查的 400 错误,启用 DLQ 会很有帮助。
401 未经授权 / 403 禁止
如果 Pub/Sub 因凭据不正确或无效而无法处理请求,就会发生以下错误。
401 unauthorized / 403 forbidden
出现此错误是因为推送订阅未经过身份验证。
如需解决此问题,请尝试以下解决方案:
启用推送身份验证。如果要与 Cloud Run 或 App Engine 集成,使用推送身份验证很重要。
如果您的解决方案不适用于推送身份验证,您可能需要在发布消息属性中添加自己的授权密钥或 API 密钥。
415 不支持的媒体类型
如果 Pub/Sub 无法处理请求,因为载荷格式的格式不受支持,则会发生以下错误。
415 Unsupported Media Type
导致此错误的原因有很多。以下是导致此错误的一些最常见原因:
- 端点缺少必需的媒体类型标头。
如需解决此问题,请尝试以下解决方案:
- 您的端点可能需要
Content-Type
标头。默认情况下,载荷解封不会设置媒体类型标头。您可以通过将Content-Type
标头附加为发布消息属性来设置该标头。
431 请求标头字段过大 / 413 内容过大
如果 Pub/Sub 因请求中发送的内容过大而无法处理请求,就会发生以下错误。
431 request header fields too Large / 413 content too large
如果 Pub/Sub 消息中的属性超过服务器的标头限制大小,就会出现此错误。
如需解决这些问题,请尝试以下解决方案:
- 关闭写入元数据。
- 在推送订阅上启用死信队列 (DLQ)。这会重定向无法传送的个别消息。之后,您的订阅将继续运行,但出现错误的消息会重定向到单独的主题,以供进一步分析。
检查是否已启用载荷解封
在 Google Cloud 控制台中,进入订阅页面。
点击相应服务的名称。
系统会打开服务详情页面。
在配置表中,找到以下值:消息数据解封和写入消息元数据。
载荷封装的状态(启用或停用)会显示在相应的表行中。
后续步骤
- 如果载荷解封方面仍有问题,请参阅获取支持。