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

Posted

技术标签:

【中文标题】Pub/Sub 推送消息没有 messageId 属性【英文标题】:Pub/Sub push message not having messageId property 【发布时间】: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)' 

【问题讨论】:

编辑您的问题并显示此消息是如何生成的。你说谷歌没有帮助。将问题跟踪器详细信息与您的问题一起发布,以便我进行查找。 您的消息是如何发布到主题的? 【参考方案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'

以上是关于Pub/Sub 推送消息没有 messageId 属性的主要内容,如果未能解决你的问题,请参考以下文章

Google Pub/Sub 推送消息不适用于启用 IAP 的应用引擎

RabbitMQ:在 pub/sub 中,消费者是轮询队列以获取新消息还是服务器推送消息?

带有推送消费者的 Google Pub/Sub

在我的端点上看不到 Google Pub/Sub 推送通知

pub/sub : 如何使用 pub sub 查看任何电子邮件帐户中的消息?

Google Pub/Sub + Cloud Run 生成多个容器