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 中,消费者是轮询队列以获取新消息还是服务器推送消息?