Så här använder du Azure Queue Storage från Node.js
Översikt
Den här guiden visar hur du utför vanliga scenarier med hjälp av Azure Queue Storage. Exemplen skrivs med hjälp av Node.js API. Scenarierna som beskrivs är att infoga, granska, hämta och ta bort kömeddelanden. Lär dig också att skapa och ta bort köer.
Vad är Queue Storage?
Azure Queue Storage är en tjänst för att lagra stora mängder meddelanden som kan nås från var som helst i världen via autentiserade anrop med HTTP eller HTTPS. Ett enda kömeddelande kan vara upp till 64 KB stort och en kö kan innehålla miljontals meddelanden, upp till den totala kapacitetsgränsen för ett lagringskonto. Queue Storage används ofta för att skapa en efter släpning av arbete som ska bearbetas asynkront.
Kötjänst begrepp
Azure-Kötjänst innehåller följande komponenter:

Lagringskonto: All åtkomst till Azure Storage görs genom ett lagringskonto. Mer information om lagrings konton finns i Översikt över lagrings konto.
Kö: en kö innehåller en uppsättning meddelanden. Alla meddelanden måste vara i en kö. Observera att könamnet måste vara helt i gemener. Mer information om namngivning av köer finns i namngivning av köer och metadata.
Meddelande: ett meddelande i valfritt format, som är upp till 64 KB. Den maximala tid som ett meddelande kan finnas i kön är 7 dagar. För version 2017-07-29 eller senare kan den maximala tiden till Live vara ett positivt tal eller-1 som anger att meddelandet inte upphör att gälla. Om den här parametern utelämnas, är standardvärdet för Time-to-Live sju dagar.
URL-format: Köer är adresser bara med följande URL-format: http://
<storage account>. Queue.Core.Windows.net/<queue>Följande URL adresserar en kö i diagrammet:
http://myaccount.queue.core.windows.net/incoming-orders
Skapa ett Azure Storage-konto
Det enklaste sättet att skapa ditt första Azure Storage-konto är att använda Azure Portal. Läs mer i Skapa ett lagringskonto.
Du kan också skapa ett Azure Storage-konto med Azure PowerShell, Azure CLI eller Azure Storage-resursprovidern för .NET.
Om du inte vill skapa ett lagrings konto i Azure just nu kan du också använda Azurite-emulatorn för att köra och testa din kod i en lokal miljö. Mer information finns i använda Azurite-emulatorn för lokal Azure Storage utveckling.
Skapa ett Node.js-program
Om du vill skapa ett tomt Node.js-program kan du se Skapa en Node.js-webbappi Azure App Service, skapa och distribuera ett Node.js-program till Azure Cloud Services med PowerShell eller Visual Studio Code.
Konfigurera ditt program för att få åtkomst till lagring
Klientbiblioteket Azure Storage JavaScript innehåller en uppsättning bekvämlighetsbibliotek som kommunicerar med lagrings-REST-tjänsterna.
Använda Node-pakethanteraren (npm) för att hämta paketet
- Använd ett kommandoradsgränssnitt som PowerShell (Windows), Terminal (Mac) eller Bash (Unix) och navigera till mappen där du skapade exempelprogrammet.
Skriv
npm install @azure/storage-queuei kommandofönstret.Kontrollera att en
node_modulesmapp har skapats. I den mappen hittar du paketet,@azure/storage-queuesom innehåller det klientbibliotek som du behöver för att komma åt lagringen.
Importera paketet
Använd kodredigeraren och lägg till följande överst i JavaScript-filen där du tänker använda köer.
const { QueueClient, QueueServiceClient } = require("@azure/storage-queue");
Så skapar du en resurs
Följande kod hämtar värdet för en miljövariabel med namnet AZURE_STORAGE_CONNECTION_STRING och använder den för att skapa ett QueueServiceClient -objekt. Det här objektet används sedan för att skapa QueueClient ett -objekt som gör att du kan arbeta med en specifik kö.
// 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();
Om kön redan finns, utlöstes ett undantag.
Infoga ett meddelande i en kö
Om du vill lägga till ett meddelande i en kö anropar du sendMessage metoden .
messageText = "Hello, World";
console.log("Adding message to the queue: ", messageText);
// Add a message to the queue
await queueClient.sendMessage(messageText);
Så här granskar du nästa meddelande
Du kan granska meddelanden i kön utan att ta bort dem från kön genom att anropa peekMessages metoden .
Som standard peekMessages granskar ett enskilt meddelande. I följande exempel tittar vi på de fem första meddelandena i kön. Om färre än fem meddelanden visas returneras bara de synliga meddelandena.
// 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);
}
Om peekMessages du anropar när det inte finns några meddelanden i kön returneras inget fel. Inga meddelanden returneras dock.
Ändra innehållet i ett meddelande i kö
I följande exempel uppdateras texten i ett meddelande.
Ändra innehållet i ett meddelande på plats i kön genom att anropa 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"
);
Så här tar du bort ett meddelande från frånkö
Att ta bort ett meddelande frånkö är en process i två steg:
Hämta meddelandet.
Ta bort meddelandet.
Följande exempel hämtar ett meddelande och tar sedan bort det.
Om du vill få ett meddelande anropar du receiveMessages metoden . Det här anropet gör meddelandena osynliga i kön, så att inga andra klienter kan bearbeta dem. När programmet har bearbetat ett meddelande anropar du deleteMessage för att ta bort det från kön.
// 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);
Som standard är ett meddelande endast dolt i 30 sekunder. Efter 30 sekunder visas det för andra klienter. Du kan ange ett annat värde genom att ange options.visibilityTimeout när du anropar receiveMessages .
Om receiveMessages du anropar när det inte finns några meddelanden i kön returneras inget fel. Inga meddelanden returneras dock.
Ytterligare alternativ för att ta bort meddelanden i frånqueuing
Det finns två sätt att anpassa meddelandehämtning från en kö:
options.numberOfMessages: Hämta en batch med meddelanden (upp till 32).options.visibilityTimeout: Ange en längre eller kortare tidsgräns för osynlighet.
I följande exempel används metoden receiveMessages för att hämta fem meddelanden i ett anrop. Sedan bearbetar den varje meddelande med hjälp av en for loop. Det anger också tidsgränsen för osynlighet till fem minuter för alla meddelanden som returneras med den här metoden.
// 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);
}
Så här hämtar du kölängden
Metoden getProperties returnerar metadata om kön, inklusive det ungefärliga antalet meddelanden som väntar i kön.
const properties = await queueClient.getProperties();
console.log("Approximate queue length: ", properties.approximateMessagesCount);
Visa en lista över köer
Om du vill hämta en lista över köer anropar du QueueServiceClient.listQueues . Om du vill hämta en lista filtrerad efter ett specifikt prefix anger du options.prefix i anropet till listQueues .
for await (const item of queueServiceClient.listQueues()) {
console.log("Queue: ", item.name);
}
Ta bort en kö
Om du vill ta bort en kö och alla meddelanden som finns i den DeleteQueue anropar du metoden för QueueClient -objektet.
// Delete the queue
console.log("Deleting queue: ", queueClient.name);
await queueClient.delete();
Om du vill rensa alla meddelanden från en kö utan att ta bort den anropar du ClearMessages .
Tips
Ta en titt på databasen med Azure Storage-kodexempel
Lättanvända Azure Storage-kodexempel från slutpunkt till slutpunkt som du kan ladda ned och köra finns i vår lista med Azure Storage-exempel.
Nästa steg
Nu när du har lärt dig grunderna i Queue Storage kan du följa dessa länkar för att lära dig mer om komplexa lagringsuppgifter.
- Besök Azure Storage teambloggen om du vill veta mer om vad som är nytt
- Gå till Azure Storage-klientbiblioteket för JavaScript-lagringsplatsen GitHub