使用 .Net 核心应用程序发送到 EventHubs 时如何优化吞吐量

vib*_*blo 5 c# azure azure-eventhub .net-core

如何创建多个使用多个底层 TCP 连接的 EventHubClient 以允许从 .net 核心 Web 应用程序快速写入 EventHub?

在 EventHubs 的编程指南 ( https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-programming-guide ) 中写道:

请务必注意,从消息传递工厂实例创建的其他 EventHubClient 对象重用相同的底层 TCP 连接。因此,这些对象对吞吐量有客户端限制。Create 方法重用单个消息传递工厂。如果您需要来自单个发送方的非常高的吞吐量,那么您可以从每个消息工厂创建多个消息工厂和一个 EventHubClient 对象。

然后他们有一个代码示例:

var factory = MessagingFactory.CreateFromConnectionString("your_connection_string");
var client = factory.CreateEventHubClient("MyEventHub");
Run Code Online (Sandbox Code Playgroud)

但是,我不知道 .Net 核心中的 MessagingFactory 在哪里/是否有?是否有可能从 .Net 核心做到这一点?我查看了 Microsoft.Azure.ServiceBus,但找不到任何内容。

vib*_*blo 1

经过测试后,似乎创建多个客户端EventHubClient.CreateFromConnectionString将打开与 EventHub 的多个连接,正如预期的那样。(这些连接在 Windows 资源监视器中可以视为单独的 TCP 连接)。

(当我仔细阅读文档时,我认为它仅适用于从 MessaginFactory 创建的 EventHubClient,这在我第一次阅读时并不清楚。但我将其添加为答案,并让问题保留,以防其他人阅读文档,例如我一开始也是这么做的)