Konfigurace možností klienta MQTT zprostředkovatele
Důležité
Toto nastavení vyžaduje úpravu prostředku zprostředkovatele. Konfiguruje se pouze při počátečním nasazení pomocí Azure CLI nebo webu Azure Portal. Pokud jsou potřeba změny konfigurace zprostředkovatele, vyžaduje se nové nasazení. Další informace najdete v tématu Přizpůsobení výchozího zprostředkovatele.
Pokročilé možnosti klienta Zprostředkovatele MQTT řídí, jak zprostředkovatel komunikuje s klienty MQTT. Tato nastavení, vyjednaná mezi zprostředkovatele a klientem během připojení, zahrnují vypršení platnosti relace, vypršení platnosti zprávy, přijmout maximum a zůstat aktivní. Jediným nastavením specifickým pro operace Azure IoT je limit fronty odběratele.
Úplný seznam dostupných nastavení najdete v referenčních informacích k rozhraní API ClientConfig .
V mnoha scénářích stačí výchozí nastavení klienta. Chcete-li přepsat výchozí nastavení klienta pro zprostředkovatele MQTT, upravte advanced.clients
oddíl v prostředku zprostředkovatele. V současné době se toto přepsání podporuje pouze pomocí příznaku --broker-config-file
při nasazování operací IoT pomocí az iot ops create
příkazu.
Začněte tím, že připravíte konfigurační soubor zprostředkovatele ve formátu JSON, například v následujícím příkladu:
{
"advanced": {
"clients": {
"maxSessionExpirySeconds": 282277,
"maxMessageExpirySeconds": 1622,
"subscriberQueueLimit": {
"length": 1000,
"strategy": "DropOldest"
},
"maxReceiveMaximum": 15000,
"maxKeepAliveSeconds": 300
}
}
}
Potom pomocí příkazu s --broker-config-file
příznakem az iot ops create
nasaďte operace IoT, jako je následující příkaz. (Pro stručnost nejsou vynechány další parametry.)
az iot ops create ... --broker-config-file <FILE>.json
Další informace najdete v tématu Podpora Azure CLI pro pokročilou konfiguraci zprostředkovatele MQTT a příklady zprostředkovatele.
Limit fronty odběratele
Zprostředkovatel MQTT uchovává frontu pro každého odběratele se zprávami QoS 1 čekajících na doručení. Zprávy se do této fronty přidají při jejich přijetí od vydavatele. Po doručení a potvrzení odběratelem se odeberou se zprávou PUBACK. Pokud zprávy přicházejí rychleji, než je odběratel může potvrdit nebo pokud je odběratel offline s trvalou relací, může fronta zvětšit.
Zprostředkovatel MQTT může tyto zprávy uložit do vyrovnávací paměti na disk , ale tato taktika nemusí být vždy dostatečná. Vyrovnávací paměť disku nemusí být nastavená nebo může být plná kvůli jiným odběratelům. Proto limit fronty odběratele pomáhá zabránit zprostředkovateli v použití příliš velké paměti pro jednoho odběratele.
Limit fronty odběratele má dvě nastavení:
Délka: Maximální počet zpráv, které lze zařadit do fronty pro jednoho odběratele. Pokud je fronta plná a dorazí nová zpráva, zprostředkovatele zprávu zahodí na základě nakonfigurované strategie.
Strategie: Strategie, která se má použít, když je fronta plná. Mezi tyto dvě strategie patří:
- Žádné: Zprávy se neodhodí , pokud nevyprší platnost relace, a fronta se může natrvalo zvětšit. Toto chování je výchozí.
- DropOldest: Nejstarší zpráva ve frontě se zahodí.
Limit platí jenom pro odchozí frontu odběratele, která obsahuje zprávy, které nebyly přiřazeny ID paketů, protože fronta v letu je plná. Tento limit se nevztahuje na frontu v testovací verzi.
Vzhledem k tomu, že se limit použije na back-endový oddíl, zprostředkovatel MQTT nemůže zaručit celkový počet odchozích zpráv pro odběratele v celém clusteru. Například nastavení délky na 10 000 neznamená, že odběratel obdrží maximálně 10 000 zpráv. Místo toho může přijímat až 10,000 * number of partitions * number of backend workers
zprávy.
Pomalé předplatitele
Pomalý odběratel je ten, který nemůže držet krok s příchozí zprávou. K tomuto problému může dojít, pokud odběratel zpracovává zprávy pomalu, je odpojen nebo je offline. Limit fronty odběratele pomáhá zabránit pomalému odběrateli v příliš velké spotřebě paměti.
Vypršení platnosti zprávy
Nastavení maxMessageExpirySeconds
určuje, jak dlouho může zpráva zůstat ve frontě, než vyprší její platnost. Pokud zpráva zůstane ve frontě delší než maximální doba vypršení platnosti, označí se jako prošlá. Zprávy s vypršenou platností se ale zahodí jenom v případě, že se dostanou na začátek fronty. Tento pasivní mechanismus vypršení platnosti pomáhá spravovat využití paměti tím, že zajišťuje, aby staré zprávy byly nakonec odebrány.
Vypršení platnosti relace
Nastavení maxSessionExpirySeconds
funguje s limitem fronty odběratele, aby se zajistilo, že se zprávy neuchovávají ve frontě na neomezenou dobu. Pokud vyprší platnost relace, všechny zprávy ve frontě pro danou relaci se zahodí. Tento postup pomáhá zabránit uživatelům offline v používání příliš velké paměti tím, že nakonec vymaže celou frontu.
Vypršení platnosti zprávy i vypršení platnosti relace jsou důležité pro správu pomalých a offline odběratelů a zajištění efektivního využití paměti.