我正在尝试访问Pub/Sub消息的messageId,以触发我的Golang函数。为此,我试图修改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。或者可能根本没有传递给函数?
在您引用的文档中,
事件结构
发布/子主题触发的云功能将发送了符合PubsubMessage类型的事件,但需要注意publishTime和messageId在PubsubMessage。相反,您可以通过访问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.
}