繁体   English   中英

如何使用 Go 指定在 pubsub 上拉取多少消息?

[英]How to specify how many messages to pull on pubsub using Go?

我正在关注这篇关于如何从订阅中提取消息的文章: https://cloud.google.com/pubsub/docs/pull

显然我最多可以提取 1,000 条消息,但是如果我只想提取 2 条消息,我该怎么办? 非常感谢您!

同步拉取支持客户端获取精确消息数的需求。

例如遵循以下代码:

func pullMsgsSync(w io.Writer, projectID, subID string) error {
        // projectID := "my-project-id"
        // subID := "my-sub"
        ctx := context.Background()
        client, err := pubsub.NewClient(ctx, projectID)
        if err != nil {
                return fmt.Errorf("pubsub.NewClient: %v", err)
        }
        defer client.Close()

        sub := client.Subscription(subID)
        sub.ReceiveSettings.Synchronous = true
        sub.ReceiveSettings.MaxOutstandingMessages = 2
        ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
        defer cancel()

        var received int32
        err = sub.Receive(ctx, func(_ context.Context, msg *pubsub.Message) {
                fmt.Fprintf(w, "Got message: %q\n", string(msg.Data))
                atomic.AddInt32(&received, 1)
                msg.Ack()
        })
        if err != nil {
                return fmt.Errorf("sub.Receive: %v", err)
        }
        fmt.Fprintf(w, "Received %d messages\n", received)

        return nil
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM