我正在编写一个ASP .NET Core应用程序,我正在使用Google PubSub模拟器,我可以在其中发布和订阅主题。但是,当我发布1000多个“大量”消息时,我想尽可能多地发布消息。
我使用Google.Cloud.PubSub.V1
库,它提供SubscriberServiceApiClient
与其API进行交互。我用PullAsync
方法异步拉动,该方法有参数maxMessages
。根据他们的文档,这决定了每个请求可以提取的最大消息数,但是它可能会返回更少的消息。如果我提供一个指定高于100的maxMessages
数的参数,它将没有任何区别。这意味着我可以从每个请求收到的最大消息数总是100,这似乎很低。我也试图通过他们的REST Api,每次拉动也限制为100条消息。
我不确定是由于某种限制还是我做错了什么。我试过在他们的文档和其他地方搜索,但没有运气。
通常,Google Cloud Pub / Sub无法向单个PullAsync
调用返回超过1,000封邮件。通过仿真器运行时,这可能会更小。 returnImmediately
的值也会影响返回的消息数。如果要最大化返回的消息数,那么您需要将returnImmediately
设置为false
。但是,即使在这种情况下,您也不一定会在每个响应中获得maxMessages
; Cloud Pub / Sub尝试平衡返回更全面的响应,并通过等待太长时间来最小化端到端延迟。
通常,为了最大化吞吐量,您需要同时激活多个PullAsync
调用。但是,更好的方法是使用SubscriberClient
,它为您处理幕后的基础请求,并将消息传递给您指定的函数。