【问题标题】:Pub/Sub push message not having messageId propertyPub/Sub 推送消息没有 messageId 属性
【发布时间】:2020-02-03 04:18:54
【问题描述】:

这可能需要针对 Cloud Pub/Sub 服务提出问题。但是到目前为止,GCP 支持并没有真正的帮助,所以我在这里发布了这个问题。

根据here,Pubsub 消息应该有一个 messageId 属性,无论是来自 pull 还是 push。

所以我想看看消息是什么样子的:(这里的事件是pubsub消息推送到云函数)

exports.my_cloud_function = (event) => {
    logger.debug(`Event: ${util.inspect(event)}`);
}

我的预期:

{ '@type': 'type.googleapis.com/google.pubsub.v1.PubsubMessage', messageId:'111111111', publishTime: 'Oct 1st 2019, xxxx', attributes: { key1: 'value1', key2: 'value2' }, data: 'eLCJ=(some base 64)' }

实际上是什么:

{ '@type': 'type.googleapis.com/google.pubsub.v1.PubsubMessage', attributes: { key1: 'value1', key2: 'value2' }, data: 'eLCJ=(some base 64)' }

【问题讨论】:

  • 编辑您的问题并显示此消息是如何生成的。你说谷歌没有帮助。将问题跟踪器详细信息与您的问题一起发布,以便我进行查找。
  • 您的消息是如何发布到主题的?

标签: node.js google-cloud-platform google-cloud-pubsub


【解决方案1】:

如果我猜对了,您正在使用带有事件触发器的云函数。而且这是一个常见的陷阱(我多次感受到它......)。

因此,在事件格式中,publishedTime 和 messageId 在 context 对象中,而不是在事件中描述 here

在您的函数中,在 param 中添加上下文,然后打印它。它应该可以工作。

exports.my_cloud_function = (event,context) => {
    logger.debug(`Event: ${util.inspect(event)}`);
    logger.debug(`Context: ${util.inspect(context)}`);
}

【讨论】:

  • 找到了。谢谢! { eventId: '774460954950556', timestamp: '2019-10-06T04:04:20.631Z', eventType: 'providers/cloud.pubsub/eventTypes/topic.publish', resource: 'projects/myProject' }
猜你喜欢
  • 2021-12-31
  • 2019-12-04
  • 2019-05-17
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-09
相关资源
最近更新 更多