Azure kuyruğu Depolama nasıl kullanılır Node.js
Genel Bakış
bu kılavuzda, Azure kuyruğu Depolama kullanarak genel senaryoları nasıl gerçekleştirebileceğiniz gösterilmektedir. Örnekler Node.js API kullanılarak yazılır. Kapsanan senaryolar sıra iletilerini ekleme, göz atma, alma ve silmeyi içerir. Kuyrukları oluşturmayı ve silmeyi de öğrenin.
Kuyruk depolama nedir?
Azure Kuyruk depolama, HTTP veya HTTPS kullanan kimlik doğrulaması yapılmış çağrılar aracılığıyla dünyanın her yerinden erişilebilen çok sayıda iletinin depolanması için bir hizmettir. Tek bir kuyruk iletisinin boyutu 64 KB’ye kadar olabilir ve bir kuyrukta, depolama hesabının toplam kapasite sınırına kadar milyonlarca ileti bulunabilir. Kuyruk depolama genellikle zaman uyumsuz olarak işlenecek iş biriktirme listesi oluşturmak için kullanılır.
Kuyruk hizmeti kavramlar
Azure Kuyruk hizmeti aşağıdaki bileşenleri içerir:

Depolama hesabı: Tüm Azure depolama erişimi bir depolama hesabı üzerinden yapılır. Depolama hesapları hakkında daha fazla bilgi için bkz. depolama hesabına genel bakış.
Kuyruk: Kuyrukta bir dizi ileti vardır. Tüm iletiler bir kuyrukta olmalıdır. Kuyruk adının tamamen küçük harfli olması gerektiğini unutmayın. Kuyrukların adlandırılması hakkında daha fazla bilgi için bkz. Kuyrukları ve Meta Verileri Adlandırma.
İleti: İleti, biçimi ne olursa olsun en çok 64 KB büyüklüktedir. Bir iletinin kuyrukta kalabileceği en uzun süre 7 gündür. Sürüm 2017-07-29 veya üzeri için, en fazla yaşam süresi herhangi bir pozitif sayı veya iletinin süresinin dolmadığını belirten-1 olabilir. Bu parametre atlanırsa, varsayılan yaşam süresi yedi gündür.
URL biçimi: Kuyruklar şu URL biçimi kullanılarak adreslenebilir: http://
<storage account>. Queue.Core.Windows.net/<queue>Aşağıdaki URL diyagramdaki bir kuyruğun adresini belirtir:
http://myaccount.queue.core.windows.net/incoming-orders
Azure depolama hesabı oluşturma
İlk Azure depolama hesabınızı oluşturmanın en kolay yolu Azure Portalı’nı kullanmaktır. Daha fazla bilgi için bkz. Depolama hesabı oluşturma.
Azure PowerShell, Azure CLI veya .NET için Azure Depolama Kaynak Sağlayıcısı’nı da kullanarak Azure depolama hesabı oluşturabilirsiniz.
Şu anda Azure 'da bir depolama hesabı oluşturmayı tercih ediyorsanız, kodunuzu yerel bir ortamda çalıştırmak ve test etmek için Azurite depolama öykünücüsünü da kullanabilirsiniz. Daha fazla bilgi için bkz. Yerel Azure depolama geliştirmesi Için Azurite öykünücüsünü kullanma.
Node.js uygulaması oluşturma
boş bir Node.js uygulaması oluşturmak için, bkz. Azure App Service 'da Node.js web uygulaması oluşturma, PowerShell veya Cloud Serviceskullanarak Azure Visual Studio Code 'de bir Node.js uygulaması derleme ve dağıtma .
Uygulamanızı depolamaya erişecek şekilde yapılandırma
JavaScript için Azure Depolama istemci kitaplığı , depolama REST hizmetleriyle iletişim kuran bir dizi kullanışlı kitaplık içerir.
Paketi edinmek için düğüm Paket Yöneticisi 'ni (NPM) kullanın
- PowerShell (Windows), Terminal (Mac) veya bash (Unix) gibi bir komut satırı arabirimi kullanın, örnek uygulamanızı oluşturduğunuz klasöre gidin.
npm install @azure/storage-queueKomut penceresine yazın.Bir
node_modulesklasörün oluşturulduğunu doğrulayın. Bu klasörün içinde@azure/storage-queue, depolamaya erişmeniz gereken istemci kitaplığını içeren paketi bulacaksınız.
Paketi içeri aktarma
Kod düzenleyicinizi kullanarak, kuyrukları kullanmayı düşündüğünüz JavaScript dosyasına aşağıdakini ekleyin.
const { QueueClient, QueueServiceClient } = require("@azure/storage-queue");
Kuyruk oluşturma
Aşağıdaki kod, adlı bir ortam değişkeninin değerini alır AZURE_STORAGE_CONNECTION_STRING ve bunu bir nesne oluşturmak için kullanır QueueServiceClient . Bu nesne daha sonra QueueClient belirli bir kuyruk ile çalışmanıza izin veren bir nesne oluşturmak için kullanılır.
// 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();
Sıra zaten varsa, bir özel durum oluşturulur.
Bir kuyruğa ileti ekleme
Bir kuyruğa ileti eklemek için sendMessage yöntemini çağırın.
messageText = "Hello, World";
console.log("Adding message to the queue: ", messageText);
// Add a message to the queue
await queueClient.sendMessage(messageText);
Sonraki iletiye nasıl göz atın
Yöntemi çağırarak kuyruktaki iletilere, kuyruktan kaldırmadan göz atmayı sağlayabilirsiniz peekMessages .
Varsayılan olarak peekMessages tek bir iletiye göz atar. Aşağıdaki örnekte kuyruktaki ilk beş ileti göz atar. Beşten az ileti görünür durumdaysa, yalnızca görünür iletiler döndürülür.
// 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);
}
peekMessagesKuyrukta hiçbir ileti olmadığında çağrı bir hata döndürmez. Ancak, hiçbir ileti döndürülmez.
Sıraya alınan iletinin içeriğini değiştirme
Aşağıdaki örnek bir iletinin metnini güncelleştirir.
Çağırarak kuyruktaki bir iletinin içeriğini değiştirme 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"
);
İletiyi sıradan çıkarma
Bir iletinin kuyruğa çıkarılması iki aşamalı bir işlemdir:
İletiyi alın.
İletiyi silin.
Aşağıdaki örnekte bir ileti alınır ve silinir.
Bir ileti almak için receiveMessages yöntemini çağırın. Bu çağrı, iletileri kuyrukta görünmez hale getirir, dolayısıyla başka hiçbir istemci bunları işleyemez. Uygulamanız bir iletiyi işledikten sonra sıradan silme çağrısı yapın deleteMessage .
// 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);
Varsayılan olarak, bir ileti yalnızca 30 saniye gizli olur. 30 saniye sonra diğer istemcilere görünür olur. ' İ çağırdığınızda, farklı bir değer belirtebilirsiniz options.visibilityTimeout receiveMessages .
receiveMessagesKuyrukta hiçbir ileti olmadığında çağrı bir hata döndürmez. Ancak, hiçbir ileti döndürülmeyecektir.
Dequeuing iletileri için ek seçenekler
Bir kuyruktan ileti alımını özelleştirmek için iki yol vardır:
options.numberOfMessages: Bir toplu ileti alın (32 'e kadar).options.visibilityTimeout: Daha uzun veya daha kısa görünürlük zaman aşımı ayarlayın.
Aşağıdaki örnek, receiveMessages tek bir çağrıda beş ileti almak için yöntemini kullanır. Ardından, her iletiyi bir döngü kullanarak işler for . Ayrıca, bu yöntemin döndürdüğü tüm iletiler için geçersiz kılma zaman aşımını beş dakikaya ayarlar.
// 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ıra uzunluğunu alma
yöntemi getProperties kuyrukta bekleyen yaklaşık ileti sayısı da dahil olmak üzere kuyrukla ilgili meta verileri döndürür.
const properties = await queueClient.getProperties();
console.log("Approximate queue length: ", properties.approximateMessagesCount);
Kuyrukları listele
Kuyrukların listesini almak için çağrısında QueueServiceClient.listQueues bulundu. Belirli bir ön eke göre filtrelenmiş bir listeyi almak için çağrısında options.prefix'i listQueues ayarlayın.
for await (const item of queueServiceClient.listQueues()) {
console.log("Queue: ", item.name);
}
Kuyruk silme
Bir kuyruğu ve içinde yer alan tüm iletileri silmek için DeleteQueue nesnesinde yöntemini QueueClient çağırmanız gerekir.
// Delete the queue
console.log("Deleting queue: ", queueClient.name);
await queueClient.delete();
Bir kuyruktan silmeden tüm iletileri temizlemek için çağrısında bulundu. ClearMessages
İpucu
Azure Depolama kod örnekleri havuzuna göz atın
İndirip çalıştırabileceğiniz kullanımı kolay uçtan uca Azure Depolama kod örnekleri lütfen Azure Depolama Örnekleri listemize bakın.
Sonraki adımlar
Kuyruk oluşturma ile ilgili temel bilgileri Depolama, daha karmaşık depolama görevleri hakkında bilgi edinmek için bu bağlantıları izleyin.
- Azure Depolama ekip blog'larını ziyaret edin ve yenileri öğrenin
- GitHub'Depolama JavaScript deposu için Azure GitHub