Google Cloud Pub/Sub 发布者生命周期

Posted

技术标签:

【中文标题】Google Cloud Pub/Sub 发布者生命周期【英文标题】:Google Cloud Pub/Sub Publisher Lifecycle 【发布时间】:2019-09-20 21:27:35 【问题描述】:

我在 ASP.NET Web 应用程序 (.NET Standard 2) 中将 Cloud Pub/Sub PublisherClient 实例作为 Singleton 运行。这是否会保留与指定 Cloud Pub/Sub 主题的持久 HTTPS 连接,我应该显式调用 ShutdownAsync 方法,还是在应用程序池回收时让连接断开?

与 Quartz.NET 一起运行,以相对较小的批次向 Pub/Sub 发布消息,每 30 秒一次。这似乎在 3 节点 Azure 负载均衡器集群中引入了服务器关联性,其中大部分流量在运行 1 小时以上后被路由到任何给定节点。不是 100% 确定这里的最佳做法。

使用 Pub/Sub C# NuGet 包 V1 1.0 和 Quartz NuGet 3.0.7

【问题讨论】:

【参考方案1】:

我假设您使用的是this PublisherClient。根据sample documentation,PublisherClient 实例应在使用后关闭。这可确保发送本地排队的消息。另请参阅ShutdownAsync documentation。

【讨论】:

是的,就是这样。 PublisherClient在 Web 应用程序的上下文中运行,在应用程序的整个生命周期内发布消息。如果我能提供帮助,宁愿在每次发布操作后都不关机 您能否安排在应用程序关闭时调用ShutdownAsync 是的,这就是当前的实现。想知道这是否是最佳实践。假设可以静态方式使用PublisherClient,类似于HttpClient 是否有任何关于 Pub/Sub SDK 或 Quartz.NET 的特定内容可能导致 3 节点负载平衡集群中的服务器关联? Yes, that's the current implementation. Wondering if it's best practice 这似乎与文档一致。 Is there anything specific about the Pub/Sub SDK, or Quartz.NET that might cause server affinity in a 3-node load-balanced cluster 这似乎是另一个问题,需要更多背景知识。随意提出一个新问题。

以上是关于Google Cloud Pub/Sub 发布者生命周期的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Pub/Sub 发布者生命周期

Google Cloud Pub/Sub - Cloud Function & Bigquery - 数据插入未发生

Google Cloud Pub/Sub,使用 HTTP PUSH 请求发布

Google Cloud Pub/Sub 确认

Google Cloud 上使用 Pub/Sub 的主/从模式

如何修改后台 Cloud Function 的 Google Cloud Pub/Sub 订阅确认截止日期