go - 如何使用监听服务实现 pub/sub google
问题描述
问题是当我需要从 google 获取 pub/sub 消息并同时运行一个 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))
解决方案
“回调由多个 goroutines 并发调用,最大限度地提高吞吐量。要终止对 Receive 的调用,请取消其上下文。” - 来自https://pkg.go.dev/cloud.google.com/go/pubsub?tab=doc
听起来您想要一个 REST API,它使客户端能够请求以前收到的 Pub/Sub 消息 (msg.Data)
“包 http 提供 HTTP 客户端和服务器实现。” - 来自https://pkg.go.dev/net/http?tab=doc#example-Handle
您需要存储或缓存从 Pub/Sub 接收到的 msg,以便它们在发出 HTTP 请求时可以发送到您的 HTTP 客户端。
推荐阅读
- javascript - Square SCA 验证买家
- javascript - 如何使用 JavaScript 从 Firebase 获取特定数据?
- android - 无法在 android 中将 app bundle 转换为 APK
- kibana - 如何处理同一日志文件中的多个模式
- python - 列表索引超出范围,当我将范围 1 缩小时,它错过了一项
- c# - 使用另一种实现的 Baseproperty
- json - 如何在flutter中本地存储json响应(sqflite数据库)
- c++ - 大小为 k 且总和为 s 的子序列数
- javascript - 如何让 Canvas 等待图像加载
- java - 访问 List 的元素
- >>> 标题 = 新的 ArrayList
- >>> ();