Aracılığıyla paylaş


Event Hubs mesajlaşma özel durumları - .NET (eski)

Bu bölümde .NET Framework API'leri tarafından oluşturulan .NET özel durumları listelenmektedir.

Önemli

Makalede listelenen bazı özel durumlar yalnızca eski Event Hubs .NET kitaplığı için geçerlidir. Örneğin: Microsoft.ServiceBus.* özel durumları.

Yeni .NET kitaplığı tarafından tetiklenen EventHubsException hakkında bilgi için bkz . EventHubsException - .NET

30 Eylül 2026'da Azure SDK yönergelerine uymayan WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus ve com.microsoft.azure.servicebus Azure Service Bus SDK kitaplıklarını kullanımdan kaldıracağız. Ayrıca SBMP protokolünün desteğini de sonlandıracağız, bu nedenle 30 Eylül 2026'da bu protokolü artık kullanamayacaksınız. Bu tarihten önce kritik güvenlik güncelleştirmeleri ve geliştirilmiş özellikler sunan en son Azure SDK kitaplıklarına geçiş yapın.

Eski kitaplıklar 30 Eylül 2026'dan sonra da kullanılabilir olsa da artık Microsoft'tan resmi destek ve güncelleştirmeler almayacaktır. Daha fazla bilgi için bkz . destek kullanımdan kaldırma duyurusu.

Özel durum kategorileri

Event Hubs .NET API'leri, aşağıdaki kategorilere girebilecek özel durumlar ve bunları düzeltmek için gerçekleştirebileceğiniz ilişkili eylem oluşturur:

Özel durum türleri

Aşağıdaki tabloda mesajlaşma özel durum türleri ve bunların nedenleri listelenmiştir ve gerçekleştirebileceğiniz önerilen eylem notları yer alır.

Özel Durum Türü Açıklama/Neden/Örnekler Önerilen Eylem Otomatik/anında yeniden denemeyle ilgili not
TimeoutException Sunucu, operationTimeout tarafından denetlenen belirtilen süre içinde istenen işleme yanıt vermedi. Sunucu istenen işlemi tamamlamış olabilir. Ağ veya diğer altyapı gecikmeleri nedeniyle bu özel durum oluşabilir. Tutarlılık için sistem durumunu denetleyin ve gerekirse yeniden deneyin.
Bkz. TimeoutException.
Yeniden deneme bazı durumlarda yardımcı olabilir; koda yeniden deneme mantığı ekleyin.
Invalidoperationexception İstenen kullanıcı işlemine sunucu veya hizmet içinde izin verilmez. Ayrıntılar için özel durum iletisine bakın. Örneğin, ileti ReceiveAndDelete modunda alındıysa Complete bu özel durumu oluşturur. Kodu ve belgeleri denetleyin. İstenen işlemin geçerli olduğundan emin olun. Yeniden deneme yardımcı olmaz.
Operationcanceledexception Zaten kapatılmış, durdurulmuş veya atılmış bir nesne üzerinde bir işlem çağrılmaya çalışılır. Nadir durumlarda ortam işlemi zaten atılır. Kodu denetleyin ve atılan nesnede işlemleri çağırmadığından emin olun. Yeniden deneme yardımcı olmaz.
Unauthorizedaccessexception TokenProvider nesnesi belirteç alamadı, belirteç geçersiz veya belirteç işlemi yapmak için gereken talepleri içermiyor. Belirteç sağlayıcısının doğru değerlerle oluşturulduğundan emin olun. Erişim Denetimi Hizmeti'nin yapılandırmasını denetleyin. Yeniden deneme bazı durumlarda yardımcı olabilir; koda yeniden deneme mantığı ekleyin.
Argumentexception
Argumentnullexception
Argumentoutofrangeexception
yöntemine sağlanan bir veya daha fazla bağımsız değişken geçersiz. NamespaceManager veya Create için sağlanan URI yol kesimlerini içerir. NamespaceManager veya Create'a sağlanan URI düzeni geçersiz. Özellik değeri 32 KB'tan büyük. Çağıran kodu denetleyin ve bağımsız değişkenlerin doğru olduğundan emin olun. Yeniden deneme yardımcı olmaz.
Microsoft.ServiceBus.Messaging MessagingEntityNotFoundException

Microsoft.Azure.EventHubs MessagingEntityNotFoundException
İşlemle ilişkili varlık yok veya silinmiş. Varlığın mevcut olduğundan emin olun. Yeniden deneme yardımcı olmaz.
MessagingCommunicationException İstemci Event Hubs ile bağlantı kuramıyor. Sağlanan ana bilgisayar adının doğru olduğundan ve konağa ulaşılabilir olduğundan emin olun. Aralıklı bağlantı sorunları varsa yeniden deneme yardımcı olabilir.
Microsoft.ServiceBus.Messaging ServerBusyException

Microsoft.Azure.EventHubs ServerBusyException
Hizmet şu anda isteği işleyemiyor. İstemci bir süre bekleyebilir ve işlemi yeniden deneyebilir.
Bkz . ServerBusyException.
İstemci belirli bir aralıkta yeniden deneyebilir. Yeniden deneme farklı bir özel durumla sonuçlanırsa, bu özel durumun yeniden deneme davranışını denetleyin.
MessagingException Aşağıdaki durumlarda oluşturulabilecek genel mesajlaşma özel durumu: Farklı bir varlık türüne (örneğin, bir konu) ait bir ad veya yol kullanarak QueueClient oluşturmaya çalışılır. 1 MB'tan büyük bir ileti göndermeye çalışılır. Sunucu veya hizmet, isteğin işlenmesi sırasında bir hatayla karşılaştı. Ayrıntılar için özel durum iletisine bakın. Bu özel durum genellikle geçici bir özel durumdur. Kodu denetleyin ve ileti gövdesi için yalnızca serileştirilebilir nesnelerin kullanıldığından emin olun (veya özel bir seri hale getirici kullanın). Özelliklerin desteklenen değer türlerinin belgelerine bakın ve yalnızca desteklenen türleri kullanın. IsTransient özelliğini denetleyin. Doğruysa işlemi yeniden deneyebilirsiniz. Yeniden deneme davranışı tanımlanmamıştır ve yardımcı olmayabilir.
MessagingEntityAlreadyExistsException Bu hizmet ad alanındaki başka bir varlık tarafından zaten kullanılan bir ada sahip bir varlık oluşturmayı deneyin. Var olan varlığı silin veya oluşturulacak varlık için farklı bir ad seçin. Yeniden deneme yardımcı olmaz.
Quotaexceededexception Mesajlaşma varlığı izin verilen maksimum boyuta ulaştı. En fazla alıcı sayısı (5 olan) tüketici başına grup düzeyinde zaten açılmışsa bu özel durum oluşabilir. Varlıktan veya alt sıralarından iletiler alarak varlıkta alan oluşturun.
Bkz. QuotaExceededException
Bu arada iletilerin kaldırılması durumunda yeniden deneme yardımcı olabilir.
MessagingEntityDisabledException Devre dışı bırakılmış bir varlıkta çalışma zamanı işlemi isteği. Varlığı etkinleştirin. Varlık arada etkinleştirilmişse yeniden deneme yardımcı olabilir.
Microsoft.ServiceBus.Messaging MessageSizeExceededException

Microsoft.Azure.EventHubs MessageSizeExceededException
İleti yükü 1 MB sınırını aşıyor. Bu 1 MB sınırı, sistem özelliklerini ve tüm .NET ek yüklerini içerebilen toplam iletiye yöneliktir. İleti yükünün boyutunu küçültün ve işlemi yeniden deneyin. Yeniden deneme yardımcı olmaz.

Quotaexceededexception

QuotaExceededException, belirli bir varlık için belirlenen kotanın aşıldığını gösterir.

En fazla alıcı sayısı (5) tüketici başına grup düzeyinde zaten açılmışsa bu özel durum oluşabilir.

Event Hubs

Event Hubs,Event Hubs başına 20 tüketici grubu sınırına sahiptir. Daha fazlasını oluşturmayı denediğinizde quotaExceededException alırsınız.

TimeoutException

TimeoutException, kullanıcı tarafından başlatılan bir işlemin işlem zaman aşımı süresinden daha uzun sürdüğünü gösterir.

Event Hubs'da zaman aşımı, bağlantı dizesinin bir parçası olarak veya ServiceBusConnectionStringBuilder aracılığıyla belirtilir. Hata iletisinin kendisi farklılık gösterebilir, ancak her zaman geçerli işlem için belirtilen zaman aşımı değerini içerir.

Zaman aşımlarının, Event Hubs hizmet güncelleştirmeleri (veya) hizmeti çalıştıran kaynaklardaki işletim sistemi güncelleştirmeleri gibi bakım işlemleri sırasında ya da bu işlemler arasında ortaya çıkması beklenir. İşletim sistemi güncelleştirmeleri sırasında varlıklar değişik yerlere taşınır ve düğümler güncelleştirilir veya yeniden başlatılır ve bunlar zaman aşımlarına neden olabilir. Azure Event Hubs hizmetinin hizmet düzeyi sözleşmesi (SLA) ayrıntıları için bkz . Event Hubs için SLA.

Olası nedenler

Bu hatanın iki yaygın nedeni vardır: yanlış yapılandırma veya geçici bir hizmet hatası.

  • Yanlış yapılandırma İşlem zaman aşımı işlem durumu için çok küçük olabilir. İstemci SDK'sında işlem zaman aşımı için varsayılan değer 60 saniyedir. Kodunuzun değerinin çok küçük bir değere ayarlı olup olmadığını denetleyin. Ağ ve CPU kullanımının koşulu belirli bir işlemin tamamlanması için gereken süreyi etkileyebilir, bu nedenle işlem zaman aşımı küçük bir değere ayarlanmamalıdır.
  • Geçici hizmet hatası Bazen Event Hubs hizmeti, isteklerin işlenmesinde gecikmeler yaşayabilir; örneğin, trafiğin yüksek olduğu dönemlerde. Bu gibi durumlarda, işlem başarılı olana kadar bir gecikmeden sonra işleminizi yeniden deneyebilirsiniz. Aynı işlem birden çok denemeden sonra da başarısız olursa, bilinen hizmet kesintileri olup olmadığını görmek için Azure hizmet durumu sitesini ziyaret edin.

ServerBusyException

Microsoft.ServiceBus.Messaging.ServerBusyException veya Microsoft.Azure.EventHubs.ServerBusyException, bir sunucunun aşırı yüklendiğini gösterir. Bu özel durum için iki ilgili hata kodu vardır.

Hata kodu 50002

Bu hata iki nedenden biri nedeniyle oluşabilir:

  • Yük olay hub'ı üzerindeki tüm bölümlere eşit olarak dağıtılmıyor ve bir bölüm yerel aktarım hızı birimi sınırlamasını aşıyor.

    Çözüm: Bölüm dağıtım stratejisini gözden geçirme veya EventHubClient.Send(eventDataWithOutPartitionKey) denemesi yararlı olabilir.

  • Event Hubs ad alanı yeterli aktarım hızı birimlerine sahip değildir (doğrulamak için Azure portalındaki Event Hubs ad alanı penceresinde Ölçümler ekranını kontrol edebilirsiniz). Portalda toplu (1 dakikalık) bilgiler gösterilir, ancak aktarım hızını gerçek zamanlı olarak ölçeriz; dolayısıyla bu yalnızca bir tahmindir.

    Çözüm: Ad alanında aktarım hızı birimlerinin artırılması yardımcı olabilir.

    Aktarım hızı birimlerini Azure portalındaki Event Hubs ad alanı sayfanızın Ölçek sayfasında veya Genel Bakış sayfasında yapılandırabilirsiniz. Alternatif olarak, kullanım gereksinimlerini karşılamak için aktarım hızı birimi sayısını artırarak ölçeği otomatik olarak artıran Otomatik şişirme özelliğini de kullanabilirsiniz.

    Aktarım hızı birimleri (TU) bir Event Hubs ad alanındaki tüm olay hub'larına uygulanır. Bu, TU'ları ad alanı düzeyinde satın aldığınız ve bu ad alanının altındaki olay hub'ları arasında paylaşıldığınız anlamına gelir. Her TU ad alanını aşağıdaki özelliklere hak kazanır:

    • Saniyede en fazla 1 MB giriş olayı (olay hub'ına gönderilen olaylar), ama saniyede en fazla 1000 giriş olayı, yönetim işlemi veya denetim API'si çağrısı.
    • Saniyede en fazla 2 MB çıkış olayı (olay hub'ından kullanılan olaylar), ama en fazla 4096 çıkış olayı.
    • 84 GB'a kadar olay depolama alanı (varsayılan 1 saatlik saklama süresi için yeterli).

    Genel Bakış sayfasındaki Ölçümleri göster bölümünde Aktarım Hızı sekmesine geçin. Grafiği seçerek x ekseninde 1 dakikalık aralıklarla daha büyük bir pencerede açın. Gelen bayt/saniye veya giden bayt/saniye almak için en yüksek değerlere bakın ve bunları 60'a bölün. İstekler sekmesindeki yoğun saatlerde saniye başına istek sayısını hesaplamak için benzer bir yaklaşım kullanın.

    TU * sınırının (giriş için saniyede 1 MB veya giriş/saniye için 1000 istek, çıkış için saniyede 2 MB) daha yüksek değerler görürseniz, Event Hubs ad alanının Ölçek (sol menüde) sayfasını kullanarak TU sayısını artırarak daha yükseğe el ile ölçeklendirin veya Event Hubs'ın Otomatik Şişir özelliğini kullanın. Ad alanını el ile ölçeklendirirken veya otomatik olarak ölçeklendirirken 40 TU'ya kadar ölçeklendirme yapabilirsiniz.

Hata kodu 50008

Bu hata nadiren oluşmalıdır. Olay Hub'ları yük dengeleyici başlamadan önce birkaç saniyeden fazla değil, ad alanınız için kod çalıştıran kapsayıcının CPU'sunu azaldığında bu durum oluşur.

Çözüm: GetRuntimeInformation yöntemine yapılan çağrıları sınırlayın. Azure Event Hubs, tüketici grubu başına saniye başına GetRuntimeInfo'ya saniyede en fazla 50 çağrıyı destekler. Sınıra ulaşıldıktan sonra aşağıdakine benzer bir özel durum alabilirsiniz:

ExceptionId: 00000000000-00000-0000-a48a-9c908fbe84f6-ServerBusyException: The request was terminated because the namespace 75248:aaa-default-eventhub-ns-prodb2b is being throttled. Error code : 50008. Please wait 10 seconds and try again.

Sonraki adımlar

Aşağıdaki bağlantıları inceleyerek Event Hubs hakkında daha fazla bilgi edinebilirsiniz: