Sdílet prostřednictvím


Předběžné načtení zpráv služby Azure Service Bus

Když povolíte funkci Prefetch pro kterýkoli z oficiálních klientů služby Service Bus, příjemce získá více zpráv, než jaká aplikace původně požadovala, až do zadaného počtu předběžného načtení. Když se zprávy vrátí do aplikace, klient získá více zpráv na pozadí, aby vyplnil vyrovnávací paměť předběžného načtení.

Umožnit předběžné načtení

Pokud chcete povolit funkci Prefetch, nastavte počet předběžného načtení fronty nebo klienta předplatného na číslo větší než nula. Nastavení hodnoty na nulu vypne předběžné načtení.

Nastavte prefetch count vlastnost pro ServiceBusReceiver a ServiceBusProcessor objekty.

Poznámka:

Sada Java Script SDK nepodporuje funkci Předběžné načtení .

Zatímco zprávy jsou k dispozici v předběžné vyrovnávací paměti, všechny následné příjem volání jsou okamžitě splněny z vyrovnávací paměti. Vyrovnávací paměť se doplní na pozadí, jakmile bude k dispozici mezera. Pokud nejsou k dispozici žádné zprávy pro doručení, operace příjmu vyprázdní vyrovnávací paměť a pak podle očekávání počká nebo zablokuje.

Proč není výchozí možností předběžné načtení?

Předběžné načtení zrychluje tok zpráv tím, že má zprávu snadno dostupnou pro místní načtení předtím, než aplikace požádá o jednu. Toto zvýšení propustnosti je výsledkem kompromisu, který musí autor aplikace explicitně provést.

Když použijete režim příjmu a odstranění , nebudou už ve frontě dostupné všechny zprávy získané do vyrovnávací paměti předběžného načtení. Zprávy zůstanou pouze v předběžné vyrovnávací paměti v paměti, dokud nebudou přijaty do aplikace. Pokud aplikace skončí před přijetím zpráv do aplikace, budou tyto zprávy nedostupné (ztraceny).

Když použijete režim příjmu náhledu, zprávy načtené do vyrovnávací paměti předběžného načtení se získají do vyrovnávací paměti v uzamčeném stavu. Mají hodiny časového limitu pro zamknutí. Pokud je vyrovnávací paměť předběžného načtení velká a zpracování trvá tak dlouho, že vyprší platnost uzamčení zpráv při zachování vyrovnávací paměti předběžného načtení nebo i v době, kdy aplikace zprávu zpracovává, může aplikace zpracovat některé matoucí události. Aplikace může získat zprávu s vypršenou platností nebo blížícím se uzamčením. Pokud ano, aplikace může zprávu zpracovat, ale pak zjistí, že zprávu nemůže dokončit kvůli vypršení platnosti zámku. Aplikace může zkontrolovat LockedUntilUtc vlastnost (která podléhá nerovnoměrné distribuci hodin mezi zprostředkovatelem a hodinou místního počítače).

Pokud vypršela platnost zámku zprávy, musí aplikace zprávu ignorovat a nemělo by volat rozhraní API zprávy. Pokud zpráva nevypršela, ale blíží se vypršení platnosti, zámek se dá prodloužit a prodloužit dalším výchozím obdobím uzamčení. Pokud zámek v přednačítané vyrovnávací paměti vyprší bezobslužně, bude zpráva považována za opuštěnou a bude znovu k dispozici pro načtení z fronty. Může to způsobit, že se zpráva načte do vyrovnávací paměti předběžného načtení a umístí se na konec. Pokud se vyrovnávací paměť předběžného načtení obvykle nedá provést během vypršení platnosti zprávy, zprávy se opakovaně načtou, ale nikdy se nedoručí v použitelném (platném uzamčeném) stavu a po překročení maximálního počtu doručení se nakonec přesunou do fronty nedoručených zpráv.

Pokud aplikace zprávu explicitně opustí, může být zpráva opět k dispozici pro načtení z fronty. Po povolení předběžného načtení se zpráva znovu načte do vyrovnávací paměti předběžného načtení a umístí se na konec. Vzhledem k tomu, že se zprávy z předem načtené vyrovnávací paměti vyprázdní v pořadí fiFO (first-in first-out), může aplikace přijímat zprávy mimo pořadí. Aplikace může například obdržet zprávu s ID 2 a poté zprávu s ID 1 (která byla opuštěna dříve) z vyrovnávací paměti.

Pokud potřebujete vysokou míru spolehlivosti zpracování zpráv a zpracování trvá značné množství práce a času, doporučujeme použít funkci Předběžné načtení konzervativně, nebo vůbec. Pokud potřebujete vysokou propustnost a zpracování zpráv, obvykle je levné, předběžné načtení přináší významné výhody propustnosti.

Maximální počet předběžného načtení a doba trvání uzamčení nakonfigurovaná ve frontě nebo předplatném musí být vyvážena tak, aby časový limit uzamčení alespoň překročil kumulativní očekávanou dobu zpracování zpráv pro maximální velikost vyrovnávací paměti předběžného načtení a jednu zprávu. Současně by časový limit uzamčení neměl být tak dlouhý, aby zprávy mohly překročit maximální dobu, po které se omylem vyřadí, a proto by jejich zámek před opětovným uvedením vypršel.

Další kroky

Vyzkoušejte ukázky v jazyce podle vašeho výběru a prozkoumejte funkce služby Azure Service Bus.

Ukázky pro starší klientské knihovny .NET a Java:

30. září 2026 vyřadíme knihovny sady SDK služby Azure Service Bus pro WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus a com.microsoft.azure.servicebus, které nevyhovují pokynům sady Azure SDK. Také ukončíme podporu protokolu SBMP, takže tento protokol už nebudete moct používat po 30. září 2026. Před tímto datem migrujte na nejnovější knihovny sady Azure SDK, které nabízejí důležité aktualizace zabezpečení a vylepšené funkce.

I když starší knihovny je možné používat i po 30. září 2026, nebudou už od Microsoftu dostávat oficiální podporu a aktualizace. Další informace najdete v oznámení o vyřazení podpory.