Jak používat azure queue Storage z Node.js
Přehled
Tento průvodce vám ukáže, jak provádět běžné scénáře pomocí azure queue Storage. Ukázky jsou napsané pomocí Node.js API. Mezi zahrnuté scénáře patří vkládání, prohlížení, získávání a odstraňování zpráv ve frontě. Naučíte se také vytvářet a odstraňovat fronty.
Co je Queue Storage?
Azure Queue Storage je služba pro ukládání velkého počtu zpráv, ke které můžete získat přístup z jakéhokoli místa na světě prostřednictvím ověřených volání s využitím protokolu HTTP nebo HTTPS. Zpráva s jednou frontou může mít velikost až 64 kB a jedna fronta můžete obsahovat miliony zpráv, až do dosažení celkové kapacity účtu úložiště. Fronta úložiště se často používá k vytvoření nevyřízených položek pro asynchronní zpracování.
Služba front koncepty
Služba front Azure obsahuje následující komponenty:

Účet úložiště: Veškerý přístup ke službě Azure Storage se provádí prostřednictvím účtu úložiště. Další informace o účtech úložiště najdete v tématu Přehled účtu úložiště.
Fronta: Fronta obsahuje sadu zpráv. Všechny zprávy musí být ve frontě. Upozorňujeme, že název fronty musí být psaný malými písmeny. Informace o pojmenování front najdete v tématu Pojmenování front a metadata.
Zpráva: Zprávu v libovolném formátu o velikosti až 64 kB. Maximální doba, po kterou může zpráva zůstat ve frontě, je 7 dní. V případě verze 2017-07-29 nebo novější může být maximální doba do živého kladného čísla nebo-1, což znamená, že platnost zprávy nevyprší. Pokud je tento parametr vynechán, výchozí hodnota TTL (Time to Live) je sedm dní.
Formát adresy URL: Fronty jsou adresovatelné v následujícím formátu adresy URL: http://
<storage account>. Queue.Core.Windows.NET/<queue>Následující adresa URL odkazuje na frontu v diagramu:
http://myaccount.queue.core.windows.net/incoming-orders
Vytvoření účtu úložiště Azure
Nejjednodušší způsob, jak vytvořit první účet úložiště Azure, je pomocí Azure Portal. Další informace najdete v tématu Vytvoření účtu úložiště.
Účet úložiště Azure můžete vytvořit také pomocí prostředí Azure PowerShell, rozhraní příkazového řádku Azure nebo pomocí poskytovatele prostředků služby Azure Storage pro .NET.
Pokud nechcete v Azure v tuto chvíli vytvářet účet úložiště, můžete použít taky emulátor úložiště Azurite ke spuštění a testování kódu v místním prostředí. Další informace najdete v tématu použití emulátoru Azurite pro vývoj místních Azure Storage.
Vytvoření aplikace Node.js
Pokud chcete vytvořit prázdnou Node.js, podívejte se na vytvoření webové aplikace Node.js v Azure App Service , sestavte anasaďte aplikaci Node.js do Azure Cloud Services pomocí PowerShellu nebo Visual Studio Code.
Konfigurace aplikace pro přístup k úložišti
Klientská Azure Storage pro JavaScript obsahuje sadu knihoven pro usnadnění, které komunikují se službami REST úložiště.
K získání balíčku použijte Node Package Manager (npm).
- Použijte rozhraní příkazového řádku, jako je PowerShell (Windows), Terminál (Mac) nebo Bash (Unix), přejděte do složky, ve které jste vytvořili ukázkovou aplikaci.
Do
npm install @azure/storage-queuepříkazového okna zadejte .Ověřte, že
node_modulesse vytvořila složka. V této složce najdete balíček , který obsahuje klientskou knihovnu,@azure/storage-queuekterou potřebujete pro přístup k úložišti.
Import balíčku
Pomocí editoru kódu přidejte následující kód na začátek javascriptového souboru, ve kterém chcete používat fronty.
const { QueueClient, QueueServiceClient } = require("@azure/storage-queue");
Jak vytvořit frontu
Následující kód získá hodnotu proměnné prostředí s názvem AZURE_STORAGE_CONNECTION_STRING a použije ji k vytvoření QueueServiceClient objektu. Tento objekt se pak použije k vytvoření QueueClient objektu, který umožňuje pracovat s konkrétní frontou.
// Retrieve the connection from an environment
// variable called AZURE_STORAGE_CONNECTION_STRING
const connectionString = process.env.AZURE_STORAGE_CONNECTION_STRING;
// Create a unique name for the queue
const queueName = "myqueue-" + Date.now().toString();
console.log("Creating queue: ", queueName);
// Instantiate a QueueServiceClient which will be used
// to create a QueueClient and to list all the queues
const queueServiceClient = QueueServiceClient.fromConnectionString(connectionString);
// Get a QueueClient which will be used
// to create and manipulate a queue
const queueClient = queueServiceClient.getQueueClient(queueName);
// Create the queue
await queueClient.create();
Pokud fronta již existuje, je vyvolána výjimka.
Jak vložit zprávu do fronty
Pokud chcete přidat zprávu do fronty, zavolejte sendMessage metodu .
messageText = "Hello, World";
console.log("Adding message to the queue: ", messageText);
// Add a message to the queue
await queueClient.sendMessage(messageText);
Jak se podívat na další zprávu
Můžete prohlížet zprávy ve frontě, aniž byste je odebírali z fronty voláním peekMessages metody .
Ve výchozím nastavení peekMessages se zobrazí náhled jedné zprávy. Následující příklad si prohlédne prvních pět zpráv ve frontě. Pokud je vidět méně než pět zpráv, vrátí se pouze viditelné zprávy.
// Peek at messages in the queue
const peekedMessages = await queueClient.peekMessages({ numberOfMessages: 5 });
for (i = 0; i < peekedMessages.peekedMessageItems.length; i++) {
// Display the peeked message
console.log("Peeked message: ", peekedMessages.peekedMessageItems[i].messageText);
}
Volání peekMessages , pokud ve frontě nejsou žádné zprávy, nevrátí chybu. Nejsou však vráceny žádné zprávy.
Jak změnit obsah zprávy ve frontě
Následující příklad aktualizuje text zprávy.
Změňte obsah zprávy na místě ve frontě voláním updateMessage .
// Get the first message in the queue
var receivedMessages = await queueClient.receiveMessages();
const firstMessage = receivedMessages.receivedMessageItems[0];
// Update the received message
await queueClient.updateMessage(
firstMessage.messageId,
firstMessage.popReceipt,
"This message has been updated"
);
Jak zprávu z fronty z fronty z fronty
Dequeueing zprávy je dvoustupňový proces:
Získejte zprávu.
Odstraňte zprávu.
Následující příklad načte zprávu a pak ji odstraní.
Pokud chcete získat zprávu, zavolejte receiveMessages metodu . Díky tomuto volání jsou zprávy ve frontě neviditelné, takže je jiní klienti neschová. Jakmile vaše aplikace zprávu zpracuje, zavolejte a deleteMessage odstraňte ji z fronty.
// Get next message from the queue
receivedMessages = await queueClient.receiveMessages();
var message = receivedMessages.receivedMessageItems[0];
console.log("Dequeuing message: ", message.messageText);
await queueClient.deleteMessage(message.messageId, message.popReceipt);
Ve výchozím nastavení je zpráva skrytá pouze po dobu 30 sekund. Po 30 sekundách se zobrazí ostatním klientům. Jinou hodnotu můžete zadat nastavením při options.visibilityTimeout volání receiveMessages .
Volání receiveMessages , pokud ve frontě nejsou žádné zprávy, nevrátí chybu. Nebudou však vráceny žádné zprávy.
Další možnosti pro dequeuing zpráv
Načítání zpráv z fronty můžete přizpůsobit dvěma způsoby:
options.numberOfMessages: Načtení dávky zpráv (až 32).options.visibilityTimeout: Nastavte delší nebo kratší časový limit neviditelnosti.
Následující příklad používá receiveMessages metodu k získání pěti zpráv v jednom volání. Pak každou zprávu zpracuje pomocí for smyčky . Nastaví také časový limit neviditelnosti na pět minut pro všechny zprávy vrácené touto metodou.
// Get up to 5 messages from the queue
const receivedMsgsResp = await queueClient.receiveMessages({ numberOfMessages: 5, visibilityTimeout: 5 * 60 });
for (i = 0; i < receivedMsgsResp.receivedMessageItems.length; i++)
{
message = receivedMsgsResp.receivedMessageItems[i];
console.log("Dequeuing message: ", message.messageText);
await queueClient.deleteMessage(message.messageId, message.popReceipt);
}
Jak získat délku fronty
getPropertiesMetoda vrátí metadata o frontě, včetně přibližného počtu zpráv čekajících ve frontě.
const properties = await queueClient.getProperties();
console.log("Approximate queue length: ", properties.approximateMessagesCount);
Výpis front
Chcete-li načíst seznam front, zavolejte QueueServiceClient.listQueues . Chcete-li načíst seznam filtrovaný konkrétní předponou, nastavte možnost Options. prefix na listQueues .
for await (const item of queueServiceClient.listQueues()) {
console.log("Queue: ", item.name);
}
Postup odstranění fronty
Chcete-li odstranit frontu a všechny zprávy, které jsou v něm obsaženy, zavolejte DeleteQueue metodu QueueClient objektu.
// Delete the queue
console.log("Deleting queue: ", queueClient.name);
await queueClient.delete();
Chcete-li vymazat všechny zprávy z fronty bez jejich odstranění, zavolejte ClearMessages .
Tip
Projděte si úložiště s ukázkami kódu pro Azure Storage
Snadno použitelné a úplné ukázky kódu pro Azure Storage, které si můžete stáhnout a použít, jsou shrnuté v seznamu ukázky pro Azure Storage.
Další kroky
teď, když jste se naučili základy Queue Storage, postupujte podle těchto odkazů a získejte další informace o složitějších úlohách úložiště.
- navštivte blog týmu Azure Storage , kde se dozvíte, co je nového.
- navštivte Azure Storage klientskou knihovnu pro úložiště javascriptu v GitHub