Azure Kuyruk Depolama'den Node.js

Genel Bakış

Bu kılavuzda, sık kullanılan senaryoların nasıl gerçekleştir Azure Kuyruk Depolama. Örnekler Api'sini kullanarak Node.js yazılır. Ele alınan senaryolar kuyruk iletilerini ekleme, göz atma, alma ve silmeyi içerir. Ayrıca kuyrukları oluşturma 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:

Azure Kuyruk hizmeti bileşenleri

  • 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'de Node.js webuygulaması oluşturma, PowerShell veya Node.js kullanarak Azure Cloud Services uygulaması derleme ve Visual Studio Code.

Depolamaya erişmek için uygulama yapılandırma

JavaScript için Azure Depolama istemci kitaplığı, depolama REST hizmetleriyle iletişim kuracak bir dizi kolaylık kitaplığı içerir.

Paketi almak için Node paket yöneticisini (npm) kullanma

  1. PowerShell (Windows), Terminal (Mac) veya Bash (Unix) gibi bir komut satırı arabirimi kullanın, örnek uygulamanızı oluşturduğunuz klasöre gidin.
  1. Komut npm install @azure/storage-queue penceresine yazın.

  2. Bir klasörün node_modules oluşturulanı doğrulayın. Bu klasörün içinde depolama alanına @azure/storage-queue erişmek için ihtiyacınız olan istemci kitaplığını içeren paketi bulabilirsiniz.

Paketi içeri aktarma

Kod düzenleyicinizi kullanarak, kuyrukları kullanmak istediğiniz JavaScript dosyasının en üstüne aşağıdakini ekleyin.

const { QueueClient, QueueServiceClient } = require("@azure/storage-queue");

Kuyruk oluşturma

Aşağıdaki kod adlı ortam değişkeninin değerini alır AZURE_STORAGE_CONNECTION_STRING ve nesnesi oluşturmak için QueueServiceClient kullanır. Bu nesne daha sonra belirli bir QueueClient kuyrukla çalışmanızı sağlayan 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();

Kuyruk zaten varsa bir özel durum oluştu.

Kuyruğa ileti ekleme

Kuyruğa ileti eklemek için yöntemini sendMessage arayı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:

  1. İletiyi alın.

  2. İletiyi silin.

Aşağıdaki örnek bir ileti alır ve siler.

İleti almak için yöntemini receiveMessages arayın. Bu çağrı iletileri kuyrukta görünmez yapar, bu nedenle başka hiçbir istemci bunları işleyemzamaz. Uygulamanız bir iletiyi işledikten sonra deleteMessage çağrısıyla kuyruktan silin.

// 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 gizlenir. 30 saniye sonra diğer istemciler tarafından görülebilir. çağrısında ayarını kullanarak farklı bir options.visibilityTimeout değer receiveMessages belirtebilirsiniz.

Kuyrukta receiveMessages ileti yok olduğunda çağrılarak hata döndürür. Ancak, hiçbir ileti döndürülecek.

Dequeuing iletileri için ek seçenekler

Bir kuyruktan ileti alımını özelleştirmek için iki yol vardır:

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, sırada getProperties bekleyen iletilerin yaklaşık sayısı dahil olmak üzere kuyruk hakkında meta veriler 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ınıza options.prefix listQueues yazı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ğırabilirsiniz.

// 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 Depolama'nın temellerini öğrendiğine göre, daha karmaşık depolama görevleri hakkında bilgi edinmek için bu bağlantıları izleyin.