如何使用监听服务实现发布/订阅Google

时间:2020-09-11 22:23:47

标签: go

问题是当我需要从Google获取发布/订阅消息并同时运行Rest API时

err = client.Subscription("my-sub").Receive(ctx, func(ctx context.Context, msg *pubsub.Message) {

    var data Data
    json.Unmarshal(msg.Data, &data)
    msg.Ack()
})
log.Printf("connect to http://localhost:%s/ for api Rest", port)
log.Fatal(http.ListenAndServe(":"+port, nil))

1 个答案:

答案 0 :(得分:0)

“该回调由多个goroutine并发调用,以最大化吞吐量。要终止对Receive的调用,请取消其上下文。” -来自https://pkg.go.dev/cloud.google.com/go/pubsub?tab=doc

听起来好像您想要一个REST API,该API可为客户端提供请求以前接收的发布/订阅消息(msg.Data)的功能

“ Package HTTP提供HTTP客户端和服务器实现。” -来自https://pkg.go.dev/net/http?tab=doc#example-Handle

您将需要存储或缓存从Pub / Sub收到的消息,以便在发出HTTP请求时可以将其发送到HTTP客户端。