Aracılığıyla paylaş


Azure Service Bus iletilerini önceden oluşturma

Prefetch özelliği, arka planda iletileri prefetch sayısına kadar yerel bir ön yakalama arabelleğine getirir. İletiler arabellekten sunulur. Bu durumda arabellekte alan boşaltılır ve alıcı arka planda daha fazla yer kaplar.

Prefetch özelliğini etkinleştirmek için kuyruk veya abonelik istemcisinin ön işlem sayısını sıfırdan büyük bir sayıya ayarlayın. Değeri sıfır olarak ayarlamak, ön koşulunu kapatır. Özellik kapatıldıktan sonra ön önbellekte iletiler varsa, uygulama bu iletileri önce arabellekten alır ve ardından hizmete gider.

ServiceBusReceiverOptions ve ServiceBusProcessorOptions nesnelerinde prefetch count özelliğini ayarlayın.

Not

Java Betik SDK'sı Prefetch özelliğini desteklemez.

İletiler ön birleştirme arabelleğinde kullanılabilir olsa da, izleyen tüm alma çağrıları arabellekten hemen yerine getirilir. Alan kullanılabilir hale geldikçe arabellek arka planda yenilenir. Teslim için kullanılabilir ileti yoksa, alma işlemi arabelleğinden boşaltılır ve beklendiği gibi bekler veya bloklar.

Prefetch neden varsayılan seçenek değil?

Uygulama bir ileti istemeden önce yerel alma için hazır bir ileti sunarak ileti akışını hızlandırır. Bu aktarım hızı kazancı, uygulama yazarının açıkça yapması gereken bir dengenin sonucudur.

Alma ve silme modunu kullandığınızda, ön koşul arabelleğine alınan tüm iletiler artık kuyrukta kullanılamaz. İletiler yalnızca uygulamaya alınana kadar bellek içi ön yükleme arabelleğinde kalır. Uygulama, iletiler uygulamaya alınmadan önce biterse, bu iletiler geri alınamaz (kaybolur).

Göz atma kilidi alma modunu kullandığınızda, ön yakalama arabelleğine getirilen iletiler kilitli durumda arabelleğe alınır. Kilit zamanlayıcı, ileti arabelleğe önceden yüklendiğinden başlar. Ön işlem arabelleği büyükse ve işlem o kadar uzun sürüyorsa, ileti kilitlerinin süresi o kadar uzun sürüyorsa, ileti arabelleğinde kalırken veya uygulama iletiyi işlerken bile uygulamanın işlemesi gereken bazı kafa karıştırıcı olaylar olabilir. Uygulama süresi dolmuş veya süresi dolan bir kilidi olan bir ileti alabilir. Bu durumda uygulama iletiyi işleyebilir, ancak kilit süre sonu nedeniyle iletiyi tamamlayamaz. Uygulama özelliği kontrol LockedUntilUtc edebilir, ancak aracı ile yerel makine saati arasında saat dengesizliği olduğunu unutmayın.

Kilidin süresi prefetch arabelleğinde sessizce dolarsa, ileti terk edilmiş olarak değerlendirilir ve yeniden kuyruktan alınabilir hale getirilir. Daha sonra ileti yeniden ön yakalama arabelleğine getirilir ve sonuna yerleştirilir İletinin sona erme süresi boyunca genellikle ön koşul arabelleği üzerinde çalışılamazsa, iletiler tekrar tekrar önceden alınır ancak kullanılabilir (geçerli olarak kilitli) bir durumda hiçbir zaman etkili bir şekilde teslim edilmez ve en yüksek teslim sayısı aşıldığında sonunda teslim edilemeyen ileti kuyruğuna taşınır.

Uygulama bir iletiyi açıkça bırakırsa, ileti kuyruktan alınabilir. Ön koşul etkinleştirildiğinde, ileti yeniden ön yakalama arabelleğine getirilir ve sonuna yerleştirilir. Prefetch arabelleğinden gelen iletiler ilk çıkar (FIFO) sırasına göre boşaltıldığından, uygulama iletileri sıra dışı alabilir. Örneğin, uygulama 2 kimliğine sahip bir ileti ve ardından arabellekten 1 kimliğine (daha önce bırakılan) bir ileti alabilir.

İleti işleme için yüksek düzeyde güvenilirliğe ihtiyacınız varsa ve işleme önemli bir iş ve zaman alıyorsa Prefetch özelliğini konservatif olarak kullanmanızı veya hiç kullanmamanızı öneririz. Yüksek aktarım hızına ihtiyacınız varsa ve ileti işleme genellikle ucuzsa, önceden işleme önemli aktarım hızı avantajları sağlar.

Kuyrukta veya abonelikte yapılandırılan maksimum ön işlem sayısı ve kilit süresi, kilit zaman aşımının en az ön yükleme arabelleğinin maksimum boyutu için beklenen toplu ileti işleme süresini ve bir iletiyi aşacak şekilde dengelenmesi gerekir. Aynı zamanda kilit süresi, iletilerin kilitliyken yaşam süresi üst sınırını aşabilecek kadar uzun olmamalıdır, çünkü bu, önceden hazır olduklarında tamamlanamadıklarında kaldırılacakları anlamına gelir.

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.