Sdílet prostřednictvím


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

Funkce Předběžné načtení načítá zprávy na pozadí do místní vyrovnávací paměti předběžného načtení až do počtu předběžného načtení. Zprávy se obsluhují z vyrovnávací paměti. Jak se stane, prostor se uvolní ve vyrovnávací paměti a přijímač se předčítá na pozadí.

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í. Pokud jsou zprávy v předběžné vyrovnávací paměti po vypnutí funkce, aplikace tyto zprávy nejprve přijme z vyrovnávací paměti a pak přejde do služby.

Nastavte prefetch count vlastnost serviceBusReceiverOptions a ServiceBusProcessorOptions 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. Časovač uzamčení začíná od okamžiku, kdy je zpráva předem načtena do vyrovnávací paměti. 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 vlastnost zkontrolovat LockedUntilUtc , ale mějte na paměti, že mezi zprostředkovatelem a hodinou místního počítače dochází ke nerovnoměrné distribuci hodin.

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. Zpráva se pak znovu 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á projít během vypršení platnosti zprávy, zprávy se opakovaně načtou, ale nikdy nejsou v použitelném (platném uzamčeném) stavu a nakonec se přesunou do fronty nedoručených zpráv, jakmile dojde k překročení maximálního počtu doručení.

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. Když se zprávy z předem načtené vyrovnávací paměti vyprázdní v pořadí fiFO (first-in first-out), aplikace může 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 doba trvání uzamčení neměla být tak dlouhá, aby zprávy mohly překročit maximální dobu trvání živého provozu, protože to by znamenalo, že se odeberou, pokud se při předběžném načtení nedokončí.

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.