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 oluşturulan EventHubsException hakkında daha fazla bilgi için bkz. eventhubsexception-.net

Özel durum kategorileri

Event Hubs .NET API 'Leri, aşağıdaki kategorilere ayrılan özel durumlar oluşturur ve bunları gidermeyi denemek için uygulayabileceğiniz ilişkili eylemi kullanabilirsiniz:

Özel durum türleri

Aşağıdaki tabloda mesajlaşma özel durum türleri ve nedenleri ve gerçekleştirebileceğiniz notlar önerilir.

Özel durum türü Açıklama/neden/örnekler Önerilen eylem Otomatik/anında yeniden denemeye göz atma
TimeoutException Sunucu, belirtilen süre içinde, OperationTimeouttarafından denetlenen istenen işleme yanıt vermedi. Sunucu istenen işlemi tamamlamış olabilir. Bu özel durum, ağ veya diğer altyapı gecikmelerinden kaynaklanabilir. Tutarlılık için sistem durumunu kontrol edin ve gerekirse yeniden deneyin.
Bkz. TimeoutException.
Yeniden deneme bazı durumlarda yardımcı olabilirler; koda yeniden deneme mantığı ekleyin.
InvalidOperationException İstenen Kullanıcı işlemine sunucu veya hizmet içinde izin verilmiyor. Ayrıntılar için özel durum iletisine bakın. Örneğin, ileti Receiveanddelete modunda alınmışsa, tamamlanmış bu özel durumu oluşturur. Kodu ve belgeleri denetleyin. İstenen işlemin geçerli olduğundan emin olun. Yeniden deneme yardımcı olmayacaktır.
OperationCanceledException Zaten kapatılmış, durdurulmuş veya atılmış bir nesne üzerinde bir işlemi çağırmak için bir girişimde bulunuldu. Nadir durumlarda, çevresel işlem zaten atıldı. Kodu denetleyin ve çıkarılan bir nesne üzerinde işlemleri çağırmadığına emin olun. Yeniden deneme yardımcı olmayacaktır.
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. Access Control Service yapılandırmasını denetleyin. Yeniden deneme bazı durumlarda yardımcı olabilirler; koda yeniden deneme mantığı ekleyin.
ArgumentException
ArgumentNullException
ArgumentOutOfRangeException
Yönteme sağlanan bir veya daha fazla bağımsız değişken geçersiz. NamespaceManager veya Create için sağlanan URI yol kesimi (ler) içeriyor. NamespaceManager veya Create için sağlanan URI şeması geçersiz. Özellik değeri 32 KB 'den büyük. Çağıran kodu denetleyin ve bağımsız değişkenlerin doğru olduğundan emin olun. Yeniden deneme, yardım etmez.
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ım etmez.
MessagingCommunicationException İstemci, Olay Hub 'ına bir bağlantı kuramıyor. Sağlanan ana bilgisayar adının doğru olduğundan ve konağın erişilebilir olduğundan emin olun. Yeniden dene, aralıklı bağlantı sorunları olup olmadığı konusunda yardımcı olabilir.
Microsoft. ServiceBus. Messaging Serverbusyıexception

Microsoft. Azure. EventHubs Serverbusonexception
Hizmet şu anda isteği işleyemiyor. İstemci bir süre bekleyip işlemi yeniden deneyin.
Bkz. Serverbusyıexception.
İstemci belirli bir aralıktan sonra 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 olan bir ad veya yol kullanarak bir Queueclient oluşturmak için girişimde bulunuldu. 1 MB 'den büyük bir ileti göndermek için bir girişimde bulunuldu. 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ürleri için belgeleri denetleyin ve yalnızca desteklenen türleri kullanın. Isgeçici özelliğini denetleyin. Doğru ise işlemi yeniden deneyebilirsiniz. Yeniden deneme davranışı tanımsız ve yardım olmayabilir.
Messagingentityalreadyvartsexception Bu hizmet ad alanındaki başka bir varlık tarafından zaten kullanılan bir ada sahip bir varlık oluşturma girişimi. Mevcut varlığı silin veya oluşturulacak varlık için farklı bir ad seçin. Yeniden deneme, yardım etmez.
QuotaExceededException Mesajlaşma varlığı izin verilen en büyük boyuta ulaştı. Bu özel durum, müşteri başına grup düzeyinde en fazla alıcı sayısı (5 ' i) zaten açıldıysa meydana gelebilir. Varlıktan veya onun alt sıraları üzerinden ileti alarak varlıkta alan oluşturun.
Bkz. QuotaExceededException
Yeniden deneme, iletilerin bu sırada kaldırılıp kaldırılmadığı konusunda yardımcı olabilir.
MessagingEntityDisabledException Devre dışı bırakılmış bir varlık üzerinde çalışma zamanı işlemi isteği. Varlığı etkinleştirin. Yeniden deneme, varlığın geçici bir şekilde etkinleştirilmiş olup olmadığı konusunda yardımcı olabilir.
Microsoft. ServiceBus. Messaging Iletiizeexceededexception

Microsoft. Azure. EventHubs Iletiizeexceededexception
İleti yükü 1 MB sınırı aşıyor. Bu 1 MB 'lık sınır, sistem özelliklerini ve tüm .NET ek yükünü içerebilen toplam ileti içindir. İleti yükünün boyutunu küçültün, sonra işlemi yeniden deneyin. Yeniden deneme, yardım etmez.

QuotaExceededException

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

Bu özel durum, müşteri başına grup düzeyinde en fazla alıcı sayısı (5) zaten açılırsa meydana gelebilir.

Event Hubs

Event Hubs Olay Hub 'ı başına 20 Tüketici grubu sınırı vardır. Daha fazla oluşturmaya çalıştığınızda bir QuotaExceededExceptionalırsınız.

TimeoutException

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

Event Hubs için zaman aşımı, bağlantı dizesinin parçası olarak veya Servicebusconnectionstringbuilderaracı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.

Hizmeti çalıştıran kaynaklarda Event Hubs hizmet güncelleştirmeleri (veya) işletim sistemi güncelleştirmeleri gibi bakım işlemleri sırasında veya içinde zaman aşımları gerçekleşmesi beklenir. İşletim sistemi güncelleştirmeleri sırasında varlıklar ' ın etrafında taşınır ve düğümler güncellenir veya yeniden başlatılır, bu da zaman aşımına neden olabilir. Azure Event Hubs hizmeti için hizmet düzeyi sözleşmesi (SLA) ayrıntıları için bkz. Event Hubs Için SLA.

Yaygın 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şlemsel koşul 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ğerin çok küçük bir değere ayarlanmış olup olmadığını denetleyin. Ağ ve CPU kullanımının koşulu, belirli bir işlemin tamamlanma süresini etkileyebilir, bu nedenle işlem zaman aşımı küçük bir değere ayarlanamaz.
  • Geçici hizmet hatası Bazen Event Hubs hizmeti isteklerindeki gecikmelerle karşılaşabilir; Örneğin, yüksek trafik dönemlerinde. Bu gibi durumlarda, işlem başarılı olana kadar işleminizi bir gecikmeden sonra yeniden deneyebilirsiniz. Aynı işlem birden çok denemeden sonra yine de başarısız olursa, bilinen hizmet kesintileri olup olmadığını görmek için Azure hizmet durumu sitesini ziyaret edin.

ServerBusyException

Bir Microsoft. ServiceBus. Messaging. serverbusonexception veya Microsoft. Azure. EventHubs. serverbusonexception , bir sunucunun aşırı yüklü olduğunu 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 'ındaki tüm bölümler arasında eşit olarak dağıtılmaz ve bir bölüm yerel üretilen iş birimi sınırlamasını aşmaktadır.

    Çözüm: Bölüm dağıtım stratejisini düzeltme ya da Eventhubclient. Send (eventDataWithOutPartitionKey) yardımcı olabilecek.

  • Event Hubs ad alanı yeterli işleme birimi içermiyor (onaylamak için Azure portal Event Hubs ad alanı penceresinde ölçümler ekranını kontrol edebilirsiniz). Portal toplanmış (1 dakikalık) bilgileri gösterir, ancak aktarım hızını gerçek zamanlı olarak ölçyoruz; bu nedenle yalnızca bir tahmindir.

    Çözüm: ad alanındaki üretilen iş birimlerinin artırılması yardımcı olabilir.

    İşleme birimlerini, Azure portal Event Hubs ad alanı sayfanızın Ölçek sayfasında veya genel bakış sayfasında yapılandırabilirsiniz. Ya da, kullanım ihtiyaçlarını karşılamak için üretilen iş birimi sayısını artırarak otomatik olarak ölçeklendirilen Otomatik Şişirkullanabilirsiniz.

    İşleme birimleri (DTU 'lar) bir Event Hubs ad alanındaki tüm olay hub 'larına uygulanır. Bu, ad alanı düzeyinde bir tüs satın almanızı ve bu ad alanı altındaki Olay Hub 'ları arasında paylaşılmanızı anlamına gelir. Her bir TU, ad alanını aşağıdaki yetenekler sahibine:

    • Saniyede 1 MB 'a kadar giriş olayı (bir olay hub 'ına gönderilen olaylar), ancak saniyede 1000 giriş olayı, yönetim işlemi veya denetim API çağrısı yok.
    • Saniyede 2 MB 'a kadar çıkış olayı (bir olay hub 'ından tüketilen olaylar), ancak 4096 'den fazla çıkış olayı yoktur.
    • 84 GB 'a kadar olay depolama (varsayılan 24 saatlik saklama süresi için yeterlidir).

    Genel bakış sayfasında ölçümleri göster bölümünde, üretilen iş sekmesine geçin. X ekseninde 1 dakikalık aralıklar içeren daha büyük bir pencerede açmak için grafiği seçin. En yüksek değerlere bakın ve gelen bayt/saniye veya giden bayt/saniye almak için bunları 60 göre bölün. İstekler sekmesinde, saniye başına istek sayısını hesaplamak için benzer bir yaklaşım kullanın.

    İzleme Sayısı * limitinden (giriş/saniye için 1000 saniyede 1 MB) daha yüksek değerler görürseniz (çıkış için saniyede 2 MB), daha yüksek bir şekilde ölçeklendirilmesi veya Event Hubs Otomatik olarak ölçeklendirmek için bir Event Hubs ad alanının Ölçek (sol menü) sayfasını kullanarak, DTU sayısını artırın. Otomatik olarak Şişir yalnızca 20 ' ye kadar artış olabileceğini unutmayın. Bunu tam 40 bir şekilde yükseltmek için bir destek isteğigönderebilirsiniz.

Hata kodu 50008

Bu hata nadiren gerçekleşmelidir. Ad alanınız için kodu çalıştıran kapsayıcı, Event Hubs yük dengeleyici başlamadan önce birkaç saniyeden daha fazla değil, CPU üzerinde düşük olduğunda gerçekleşir.

Çözüm: GetRuntimeInformation yöntemiyle yapılan çağrıları sınırlayın. Azure Event Hubs, saniyedeki Getruntimeınfo 'a her bir tüketici grubu için en fazla 50 çağrısı destekler. Sınıra ulaşıldığında 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: