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 - Cloud Function & Bigquery - 数据插入未发生
Google Cloud Pub/Sub,使用 HTTP PUSH 请求发布