【问题标题】:Can the EventHubProducerClient be reused across multiple requestEventHubProducerClient 是否可以跨多个请求重用
【发布时间】:2020-08-31 18:00:58
【问题描述】:

我正在利用 Azure SDK 的服务将遥测数据记录到 Azure 事件中心。我的客户端应用程序调用一个 API 端点,该端点实例化 EventHubProducerClient 以将数据记录到事件中心。我正在管理许多 api 调用,并且想知道 EventHubProducerClient 是否可以在多个调用中重复使用,或者我应该在每次调用中使用一个新实例。

【问题讨论】:

    标签: azure-eventhub


    【解决方案1】:

    是的。 EventHubProducerClient 在应用程序的生命周期内可以安全地缓存和使用,这是在应用程序定期或半定期发布事件时使用的最佳实践。在内部,生产者将管理其底层资源,并透明地尝试在不活动期间保持资源使用率较低,并在使用率较高期间管理其健康状况。

    在您的应用程序关闭时调用其CloseAsync 方法将确保正确清理网络资源和其他非托管对象。

    旁注:EventHubProducerClient 的一个常见问题是,如果可以安全地视为长寿命,它为什么要实现 IAsyncDisposable。这样做的部分原因是为了在发布非常少且资源是应用程序关注的情况下方便,部分原因是为了模仿HttpClient 的模式。

    【讨论】:

    • 不幸的是,文档并没有更好地说明这一点,因为它实现了IAsyncDisposable,许多代码示例只是演示了内联使用它,这具有巨大的性能成本(在 HTTP 请求上,添加 100-如果不缓存生产者,则为 200 毫秒)。
    • 同意。我会跟进,看看我们是否可以更新官方文档以更好地反映这一点。
    • 此建议是否会因 Azure 函数和静态客户端而发生变化?在这种情况下将如何或应该使用 CloseAsync?
    • 同样的指导也适用于函数。在这种情况下管理生命周期的最简单方法是在 registering services 进行依赖注入时在构建器上使用 AddEventHubProducerClient。这会将生产者注册为 Singleton 并确保处理得到妥善处理。 (这是它支持 IAsyncDisposable 的另一个原因)
    猜你喜欢
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2012-01-20
    • 2012-12-17
    • 2019-10-20
    • 1970-01-01
    相关资源
    最近更新 更多