登录
首页 >  Golang >  Go问答

获取引发Cloud Function的Pub/Sub消息的messageID

来源:stackoverflow

时间:2024-02-16 12:30:24 261浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《获取引发Cloud Function的Pub/Sub消息的messageID》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我正在尝试访问触发我的 golang 函数的 pub/sub 消息的 messageid。为此,我尝试修改 cloud functions 文档中的 pubsubmessage 结构:

// PubSubMessage is the payload of a Pub/Sub event.
// See the documentation for more details:
// https://cloud.google.com/pubsub/docs/reference/rest/v1/PubsubMessage
type PubSubMessage struct {
        Data []byte `json:"data"`
        MessageId string `json:"messageId"`
}

该函数编译正常,但 messageid 值变为空。更改类型没有帮助。 我想知道是否有办法从函数内获取触发消息 id。或者也许根本没有传递给函数?


正确答案


在您引用的文档中,

事件结构

从 pub/sub 主题触发的云函数将是 发送符合 pubsubmessage 类型的事件,但需要注意的是 publishtime 和 messageid 不能直接在 发布订阅消息。相反,您可以通过访问publishtime和messageid 事件元数据的事件 id 和时间戳属性。这 元数据可以通过传递给您的上下文对象来访问 调用时函数。

你可以像这样获取messageid

import  "cloud.google.com/go/functions/metadata"

func YourFunc(ctx context.Context, m PubSubMessage) error {
    metadata, err := metadata.FromContext(ctx)
    if err != nil {
        // Handle Error
    }
    messageId := metadata.EventID

    // Rest of your code below here.
}

本篇关于《获取引发Cloud Function的Pub/Sub消息的messageID》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>