Google PubSub每次拉取的最大邮件数

时间:2018-03-01 21:38:35

标签: c# google-cloud-pubsub

我正在编写一个ASP .NET Core应用程序,我正在使用Google PubSub模拟器,我可以发布和订阅主题。但是,当我发布一个"大" 1000+的消息量,我想尽可能多的拉。

我使用提供Google.Cloud.PubSub.V1的{​​{1}}库与其API进行交互。我使用参数SubscriberServiceApiClient的{​​{1}}方法异步拉取。根据他们的文档,这决定了每个请求可以提取的最大消息数,但是它可能会返回更少的消息。如果我提供一个指定PullAsync数字大于100的参数,那么它就没有区别。这意味着我可以从每个请求收到的最大消息数总是100,这似乎很低。我也试图通过他们的REST Api,每次拉动也限制为100条消息。

我不确定是由于某种限制还是我做错了什么。我试过在他们的文档和其他地方搜索,但没有运气。

2 个答案:

答案 0 :(得分:1)

通常,Google Cloud Pub / Sub不能向单个PullAsync电话返回超过1,000封邮件。通过仿真器运行时,这可能会更小。 returnImmediately的值也会影响返回的消息数。如果您想最大化返回的邮件数量,那么您需要将returnImmediately设置为false。但是,即使在这种情况下,您也不一定会在每个响应中获得maxMessages; Cloud Pub / Sub尝试通过等待太长时间来平衡返回更全面的响应并最小化端到端延迟。<​​/ p>

通常,要最大化吞吐量,您需要同时激活多个PullAsync个调用。但是,更好的方法是使用SubscriberClient,它为您处理幕后的基础请求,并将消息传递给您指定的函数。

答案 1 :(得分:1)

在2019年11月,最大邮件数量仍被限制为1,000条。Pubsub不允许一次获取更多邮件。如下图所示,我试图一次循环发送消息,一次发送1,000条。在一半的请求中,它得到的消息比最大消息量少得多。我设法在Cloud Function的最长9分钟运行时间内提取了50,000条消息。

另一种解决方案是使用google.cloud.pubsub_v1.SubscriberClient.subscribe()异步订阅pubsub主题。但是,此解决方案更适合长时间运行的过程,您可以将其描述为位于服务器上的一种收集器。

enter image description here