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

Pub/Sub push message not having messageId property

这可能需要针对云 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)' }

如果我猜对了,您正在使用带有事件触发器的 Cloud Functions。而且是个常见的陷阱(我中了好几次……)。

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

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

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