You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP Pub/Sub拉取消息为空:Cloud Functions发布订阅异常排查

订阅端解码Pub/Sub CloudEvent消息为空的原因

以下是几种常见的触发原因:

  • CloudEvent嵌套结构未正确解析
    通过CloudEvent接收Pub/Sub消息时,原始消息会被封装在CloudEvent的data字段的嵌套结构里。正确的结构示例:

    {
      "data": {
        "@type": "type.googleapis.com/google.pubsub.v1.PubsubMessage",
        "data": "Base64编码的原始JSON内容",
        "attributes": {}
      }
    }
    

    如果订阅端直接读取顶层data就尝试解码,而没有先提取内部的data字段并做Base64解码,就会得到空结果。

  • 发布端与订阅端编码方式不匹配
    发布端若将XeroTenant序列化为JSON字符串后,未做Base64编码就构建PubsubMessage,但订阅端按照Pub/Sub CloudEvent的默认规则(默认消息体为Base64编码)去解码,会因格式不匹配导致解码失败,最终得到空内容。

  • CloudEvent数据类型配置错误
    若订阅端的CloudEvent配置了错误的datacontenttype(比如发布端发送的是application/json,但订阅端期望其他格式),或者反序列化逻辑未正确处理JSON结构,也会导致解码后内容为空。

  • 消息内容存放位置错误
    发布端构建PubsubMessage时,误将XeroTenant的JSON内容放到了attributes字段而非data字段,导致订阅端从data字段读取不到有效数据。

内容的提问来源于stack exchange,提问作者Pavanraotk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:22:35