Azure Service Bus iletilerini önceden oluşturma

Resmi Service Bus istemcilerinden herhangi biri için Prefetch özelliğini etkinleştirdiğinizde, alıcı belirtilen ön işlem sayısına kadar uygulamanın ilk istediği sayıdan daha fazla ileti alır. İletiler uygulamaya döndürüldükçe, istemci ön koşul arabelleği doldurmak için arka planda daha fazla ileti alır.

Önceden Getirme Etkinleştir

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.

ServiceBusReceiver ve ServiceBusProcessor nesnelerinde prefetch count özelliğini ayarlayın.

Dekont

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 tıklanması için zaman aşımı saati var. Ö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ğini denetleyebiliyor LockedUntilUtc (aracı ile yerel makine saati arasında saat dengesizliği olabilir).

İleti kilidinin süresi dolduysa, uygulamanın iletiyi yoksayması ve iletide herhangi bir API çağrısı yapmaması gerekir. İletinin süresi dolmamışsa ancak süre sonu çok yakınsa, kilit yenilenebilir ve başka bir varsayılan kilit süresiyle uzatılabilir. Kilidin süresi prefetch arabelleğinde sessizce dolarsa, ileti terk edilmiş olarak değerlendirilir ve yeniden kuyruktan alınabilir hale getirilir. İletinin ön arabellek içine alınmasına ve sonuna yerleştirilmesine neden olabilir. İleti süre sonu sırasında genellikle ön işlem arabelleği üzerinde çalışılamıyorsa, iletiler sürekli olarak önceden eklenir ancak kullanılabilir (geçerli olarak kilitlenir) 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. Ön işlem 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 zaman aşımı, iletilerin yanlışlıkla bırakıldığında yaşam süresi üst sınırını aşması ve bu nedenle yeniden teslim edilmeden önce kilitlerinin süresinin dolmasını gerektirmesi o kadar uzun olmamalıdır.

Sonraki adımlar

Azure Service Bus özelliklerini keşfetmek için örnekleri istediğiniz dilde deneyin.

Eski .NET ve Java istemci kitaplıkları için örnekler:

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.