Pub/Sub 推送消息没有 messageId 属性

som*_*ame 1 node.js google-cloud-platform google-cloud-pubsub

这可能会导致 Cloud Pub/Sub 服务出现问题。但到目前为止,GCP 支持并没有真正帮助,所以我在这里发布这个问题。

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

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

exports.my_cloud_function = (event) => {
    logger.debug(`Event: ${util.inspect(event)}`);
}
Run Code Online (Sandbox Code Playgroud)

我所期望的:

{ '@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)' }
Run Code Online (Sandbox Code Playgroud)

实际上是什么:

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

gui*_*ere 5

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

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

在您的函数中,在 param 中添加上下文,然后打印它。它应该有效。

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