Svy*_*rny 3 go google-cloud-pubsub google-cloud-functions
我正在尝试访问触发我的 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"`
}
Run Code Online (Sandbox Code Playgroud)
该函数编译正常,但 MessageID 值变为空。更改类型没有帮助。我想知道是否有办法从函数内获取触发消息 Id。或者也许根本没有传递给函数?
在您引用的文件中,
事件结构
从 Pub/Sub 主题触发的 Cloud Functions 将发送符合 PubsubMessage 类型的事件,但需要注意的是, publishTime 和 messageId 在 PubsubMessage 中不直接可用。相反,您可以通过事件元数据的事件ID 和时间戳属性访问publishTime 和messageId。此元数据可通过调用函数时传递给函数的上下文对象来访问。
你可以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.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1452 次 |
| 最近记录: |