lit*_*had 5 go subscriber google-cloud-pubsub
我在google pubsub中创建了一个主题,并在主题内创建了一个订阅,具有以下设置
然后我在 go 中编写了一个拉取器,使用它的Receive来拉取并确认已发布的消息
package main
import (
...
)
func main() {
ctx := context.Background()
client, err := pubsub.NewClient(ctx, config.C.Project)
if err != nil {
// do things with err
}
sub := client.Subscription(config.C.PubsubSubscription)
err := sub.Receive(ctx, func(ctx context.Context, msg *pubsub.Message) {
msg.Ack()
})
if err != context.Canceled {
logger.Error(fmt.Sprintf("Cancelled: %s", err.Error()))
}
if err != nil {
logger.Error(fmt.Sprintf("Error: %s", err.Error()))
}
}
Run Code Online (Sandbox Code Playgroud)
没什么特别的,它工作得很好,但过了一段时间(~闲置 3 小时后),它停止接收新发布的消息,没有错误,什么也没有。我错过了什么吗?
一般来说,订阅者停止接收消息的原因可能有多种:
subscription/backlog_bytes。如果您的问题不属于这些类别之一,最好联系 Google Cloud 支持人员并提供您的项目名称、主题名称和订阅名称,以便他们可以将问题范围缩小到您的用户代码、客户端图书馆本身或服务。