2016-02-28 30 views
0

我使用這些代碼段將發佈一個eventhub事件:eventhub出版很慢

// ... 

var eventHubClient = EventHubClient.CreateFromConnectionString(ConnectionString, EventHubName); 

// ... 

var serializerSettings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.None }; 
var data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(evt, serializerSettings)); 
var eventToBeSend = new EventData(data) {PartitionKey = "Bla"}; 
eventHubClient.Send(eventToBeSend); 

這似乎是很慢(即eventHubClient.Send方法調用需要相當長的時間)。我能做些什麼來加快速度?

回答

1

您可以嘗試將事件分組發送並使用SendBatchAsync()。只要批量大小不超過一個操作的256k限制,這可能會顯着加速消息傳遞。

此外,只要確保您也堅持QueueClient - 它們是通過名爲MessagingFactory創建的,它提供了內部連接管理,因此一旦創建,就保持您的QueueClient向上。

有對服務總線性能良好的頁面:

https://azure.microsoft.com/nb-no/documentation/articles/service-bus-performance-improvements/

0

最常見的瓶頸時,發送數據的一個很大的量到事件集線器是不正確的集吞吐量單位。

不太清楚這個請求需要多少時間以及您發送的每個包的大小,但是您應該在任何假設之前檢查這個官方文檔。

什麼是事件中心吞吐量單位?

您可以通過Azure門戶或事件中心資源管理器模板顯式選擇事件中心吞吐量單位。可以通過單位適用於在事件集線器命名空間的所有事件集線器,並且每個可以通過單元賦予命名空間到以下功能:每個進入的事件(事件發送到事件集線器)的第二

  • 1 MB的,但每秒不超過1000個入口事件,管理操作或控制API調用。
  • 高達每秒2 MB的出口事件(從事件集線器消耗的事件)。 高達84 GB的事件存儲(足夠默認的24小時保留期)。
  • 事件中心吞吐量單位按小時計費,根據給定小時內選定的最大單位數量計算。隨着使用量的增加,您可以自動增加數量吞吐量單位。
+0

如果TU設置不當,可能會變成瓶頸並降低性能。 –

+0

會做,謝謝 –