Hızlı Başlangıç: JavaScript için Azure Kuyruk Depolama istemci kitaplığı

JavaScript için Azure Kuyruk Depolama istemci kitaplığını kullanmaya başlayın. Azure Kuyruk Depolama, daha sonra almak ve işlemek üzere çok sayıda iletiyi depolamaya yönelik bir hizmettir. Paketi yüklemek için bu adımları izleyin ve temel görevler için örnek kodu deneyin.

API başvuru belgeleri | Kitaplık kaynak kodu | Paketi (npm)Örnekler |

JavaScript için Azure Kuyruk Depolama istemci kitaplığını kullanarak:

  • Kuyruk oluştur
  • Kuyruğa ileti ekleme
  • Kuyruktaki iletilere göz atma
  • Kuyruktaki iletiyi güncelleştirme
  • Kuyruk uzunluğu alma
  • Kuyruktan ileti alma
  • Kuyruktan iletileri silme
  • Bir kuyruk silme

Ön koşullar

Ayarlama

Bu bölüm, JavaScript için Azure Kuyruk Depolama istemci kitaplığıyla çalışmak üzere bir proje hazırlama işleminde size yol gösterir.

Proje oluşturma

adlı queues-quickstartbir Node.js uygulaması oluşturun.

  1. Konsol penceresinde (cmd, PowerShell veya Bash gibi) proje için yeni bir dizin oluşturun:

    mkdir queues-quickstart
    
  2. Yeni oluşturulan queues-quickstart dizine geçin:

    cd queues-quickstart
    
  3. Package.json dosyası oluşturun:

    npm init -y
    
  4. Projeyi Visual Studio Code'da açın:

    code .
    

Paketleri yükleme

Proje dizininden komutunu kullanarak npm install aşağıdaki paketleri yükleyin.

  1. Azure Kuyruk Depolama npm paketini yükleyin:

    npm install @azure/storage-queue
    
  2. Parolasız bağlantıları desteklemek için Azure Identity npm paketini yükleyin:

    npm install @azure/identity
    
  3. Bu hızlı başlangıçta kullanılan diğer bağımlılıkları yükleyin:

    npm install uuid dotenv
    

Uygulama çerçevesini ayarlama

Proje dizininden:

  1. Kod düzenleyicinizde yeni bir metin dosyası açma

  2. Azure ve Node.js modüllerini yüklemek için çağrı ekleme require

  3. Temel özel durum işleme dahil olmak üzere programın yapısını oluşturma

    Kod şu şekildedir:

    const { QueueClient } = require("@azure/storage-queue");
    const { DefaultAzureCredential } = require('@azure/identity');
    const { v1: uuidv1 } = require("uuid");
    
    async function main() {
        console.log("Azure Queue Storage client library - JavaScript quickstart sample");
    
        // Quickstart code goes here
    }
    
    main().then(() => console.log("\nDone")).catch((ex) => console.log(ex.message));
    
    
  4. Yeni dosyayı dizininde queues-quickstart olduğu gibi index.js kaydedin.

Azure'da kimlik doğrulaması

Çoğu Azure hizmeti için uygulama istekleri yetkilendirilmelidir. DefaultAzureCredential Azure Identity istemci kitaplığı tarafından sağlanan sınıfı kullanmak, kodunuzda Azure hizmetlerine parolasız bağlantılar uygulamak için önerilen yaklaşımdır.

Ayrıca parolaları, bağlantı dizesi veya diğer kimlik bilgilerini kullanarak Azure hizmetlerine yönelik istekleri doğrudan yetkilendirilebilirsiniz. Ancak bu yaklaşım dikkatli kullanılmalıdır. Geliştiriciler bu gizli dizileri güvenli olmayan bir konumda asla açığa çıkarmamak için dikkatli olmalıdır. Parolaya veya gizli anahtara erişim kazanan herkes kimlik doğrulaması yapabilir. DefaultAzureCredential parolasız kimlik doğrulamasına izin vermek için hesap anahtarı üzerinde gelişmiş yönetim ve güvenlik avantajları sunar. Her iki seçenek de aşağıdaki örnekte gösterilmiştir.

DefaultAzureCredential , JavaScript için Azure Identity istemci kitaplığı tarafından sağlanan bir sınıftır. hakkında DefaultAzureCredentialdaha fazla bilgi edinmek için bkz . DefaultAzureCredential genel bakışı. DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim) farklı kimlik doğrulama yöntemleri kullanmasını sağlar.

Örneğin, uygulamanız yerel olarak geliştirirken Azure CLI oturum açma kimlik bilgilerinizi kullanarak kimlik doğrulaması yapabilir ve ardından Azure'a dağıtıldıktan sonra yönetilen kimlik kullanabilir. Bu geçiş için kod değişikliği gerekmez.

Yerel olarak geliştirme yaparken, kuyruk verilerine erişen kullanıcı hesabının doğru izinlere sahip olduğundan emin olun. Kuyruk verilerini okumak ve yazmak için Depolama Kuyruk Verileri Katkıda Bulunanı gerekir. Kendinize bu rolü atamak için Kullanıcı Erişimi Yönetici istrator rolüne veya Microsoft.Authorization/roleAssignments/write eylemini içeren başka bir role atanmalısınız. Azure portalı, Azure CLI veya Azure PowerShell'i kullanarak kullanıcıya Azure RBAC rolleri atayabilirsiniz. Rol atamaları için kullanılabilir kapsamlar hakkında daha fazla bilgiyi kapsam genel bakış sayfasından öğrenebilirsiniz.

Bu senaryoda, En Az Ayrıcalık İlkesi'ni izlemek için depolama hesabı kapsamındaki kullanıcı hesabınıza izinler atayacaksınız. Bu uygulama kullanıcılara yalnızca gereken minimum izinleri verir ve daha güvenli üretim ortamları oluşturur.

Aşağıdaki örnek, depolama hesabınızdaki kuyruk verilerine hem okuma hem de yazma erişimi sağlayan Depolama Kuyruk Verileri Katkıda Bulunanı rolünü kullanıcı hesabınıza atar.

Önemli

Çoğu durumda rol atamasının Azure'a yayılması bir veya iki dakika sürer, ancak nadir durumlarda sekiz dakikaya kadar sürebilir. Kodunuzu ilk kez çalıştırdığınızda kimlik doğrulama hataları alıyorsanız, birkaç dakika bekleyin ve yeniden deneyin.

  1. Azure portalında ana arama çubuğunu veya sol gezintiyi kullanarak depolama hesabınızı bulun.

  2. Depolama hesabına genel bakış sayfasında sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin.

  3. Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.

  4. Üst menüden + Ekle'yi seçin ve ardından açılan menüden Rol ataması ekle'yi seçin.

A screenshot showing how to assign a role.

  1. Sonuçları istenen role göre filtrelemek için arama kutusunu kullanın. Bu örnek için Depolama Kuyruk Verileri Katkıda Bulunanı'nı arayın ve eşleşen sonucu seçin ve ardından İleri'yi seçin.

  2. Erişim ata'nın altında Kullanıcı, grup veya hizmet sorumlusu'na tıklayın ve ardından + Üye seç'e tıklayın.

  3. İletişim kutusunda Microsoft Entra kullanıcı adınızı (genellikle user@domain e-posta adresiniz) arayın ve iletişim kutusunun alt kısmındaki Seç'i seçin.

  4. Son sayfaya gitmek için Gözden geçir + ata'yı seçin ve ardından işlemi tamamlamak için Gözden geçir + yeniden ata'yı seçin.

Nesne modeli

Azure Kuyruk Depolama, çok sayıda iletiyi depolamaya yönelik bir hizmettir. Kuyruk iletisinin boyutu en fazla 64 KB olabilir. Kuyruk, depolama hesabının toplam kapasite sınırına kadar milyonlarca ileti içerebilir. Kuyruklar genellikle zaman uyumsuz olarak işlenmek üzere bir iş kapsamı oluşturmak için kullanılır. Kuyruk Depolama üç tür kaynak sunar:

  • Depolama hesabı: Azure Depolama tüm erişimi bir depolama hesabı üzerinden yapılır. Depolama hesapları hakkında daha fazla bilgi için bkz. Depolama hesaba 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. İleti en fazla 7 gün kuyrukta kalabilir. Sürüm 2017-07-29 veya üzeri için maksimum 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.

Aşağıdaki diyagramda bu kaynaklar arasındaki ilişki gösterilmektedir.

Diagram of Queue storage architecture

Bu kaynaklarla etkileşime geçmek için aşağıdaki JavaScript sınıflarını kullanın:

  • QueueServiceClient: ÖrnekQueueServiceClient, Azure Depolama Kuyruk hizmetindeki belirli bir depolama hesabına bağlantıyı temsil eder. Bu istemci, depolama hesabınızdaki tüm kuyrukları yönetmenize olanak tanır.
  • QueueClient: Örnek, QueueClient depolama hesabındaki tek bir kuyruğu temsil eder. Bu istemci, tek bir kuyruğu ve iletilerini yönetmenize ve işlemenize olanak tanır.

Kod örnekleri

Bu örnek kod parçacıkları, JavaScript için Azure Kuyruk Depolama istemci kitaplığıyla aşağıdaki eylemlerin nasıl yapılacağını gösterir:

Erişimi yetkilendirme ve istemci nesnesi oluşturma

Rolü atadığınız Microsoft Entra hesabıyla kimliğinizin doğrulanmış olduğundan emin olun. Azure CLI, Visual Studio Code veya Azure PowerShell aracılığıyla kimlik doğrulaması yapabilirsiniz.

Aşağıdaki komutu kullanarak Azure CLI aracılığıyla Azure'da oturum açın:

az login

Kimlik doğrulamasından geçtikten sonra, kullanarak depolama hesabındaki kuyruk verilerine erişmek için kullanarak bir QueueClient nesne DefaultAzureCredential oluşturabilir ve yetkilendirme yapabilirsiniz. DefaultAzureCredential önceki adımda oturum açtığınız hesabı otomatik olarak bulur ve kullanır.

kullanarak DefaultAzureCredentialyetkilendirmek için, paketleri yükleme bölümünde açıklandığı gibi @azure/kimlik paketini eklediğinizden emin olun. Ayrıca index.js dosyasında @azure/identity modülünü yüklediğinizden emin olun:

const { DefaultAzureCredential } = require('@azure/identity');

Kuyruk için bir ad belirleyin ve yetkilendirme için kullanarak DefaultAzureCredential sınıfının bir örneğini QueueClient oluşturun. Depolama hesabındaki kuyruk kaynağını oluşturmak ve bunlarla etkileşim kurmak için bu istemci nesnesini kullanırız.

Önemli

Kuyruk adları yalnızca küçük harf, sayı ve kısa çizgi içerebilir ve harf veya sayı ile başlamalıdır. Her kısa çizginin önünde ve arkasında kısa çizgi dışında bir karakter bulunmalıdır. Ad da 3 ile 63 karakter uzunluğunda olmalıdır. Kuyrukları adlandırma hakkında daha fazla bilgi için bkz . Kuyrukları ve meta verileri adlandırma.

Yönteminin içine main aşağıdaki kodu ekleyin ve yer tutucu değerini değiştirdiğinden <storage-account-name> emin olun:

// Create a unique name for the queue
const queueName = "quickstart" + uuidv1();

// Instantiate a QueueClient which will be used to create and interact with a queue
// TODO: replace <storage-account-name> with the actual name
const queueClient = new QueueClient(`https://<storage-account-name>.queue.core.windows.net/${queueName}`, new DefaultAzureCredential());

Dekont

sınıfı kullanılarak QueueClient gönderilen iletiler, UTF-8 kodlamalı bir XML isteğine dahil edilebilen bir biçimde olmalıdır. İletiye işaretleme eklemek için, iletinin içeriği XML kaçışlı veya Base64 kodlu olmalıdır.

Kuyruk iletileri dize olarak depolanır. Farklı bir veri türü göndermeniz gerekiyorsa, iletiyi gönderirken bu veri türünü bir dize olarak seri hale getirmeniz ve iletiyi okurken dize biçimini seri durumdan çıkarmanız gerekir.

Node.js'de JSON'ı dize biçimine dönüştürmek ve yeniden geri dönmek için aşağıdaki yardımcı işlevleri kullanın:

function jsonToBase64(jsonObj) {
    const jsonString = JSON.stringify(jsonObj)
    return  Buffer.from(jsonString).toString('base64')
}
function encodeBase64ToJson(base64String) {
    const jsonString = Buffer.from(base64String,'base64').toString()
    return JSON.parse(jsonString)
}

Kuyruk oluştur

QueueClient nesnesini kullanarak, depolama hesabınızda kuyruk oluşturmak için yöntemini çağırıncreate.

Bu kodu yönteminin main sonuna ekleyin:

console.log("\nCreating queue...");
console.log("\t", queueName);

// Create the queue
const createQueueResponse = await queueClient.create();
console.log("Queue created, requestId:", createQueueResponse.requestId);

Kuyruğa ileti ekleme

Aşağıdaki kod parçacığı yöntemini çağırarak sendMessage kuyruğa iletiler ekler. Ayrıca QueueSendMessageResponse üçüncü sendMessage çağrıdan döndürülen kaydeder. Döndürülen sendMessageResponse , programın ilerleyen bölümlerinde ileti içeriğini güncelleştirmek için kullanılır.

Bu kodu işlevin main sonuna ekleyin:

console.log("\nAdding messages to the queue...");

// Send several messages to the queue
await queueClient.sendMessage("First message");
await queueClient.sendMessage("Second message");
const sendMessageResponse = await queueClient.sendMessage("Third message");

console.log("Messages added, requestId:", sendMessageResponse.requestId);

Kuyruktaki iletilere göz atma

yöntemini çağırarak kuyruktaki iletilere peekMessages göz atın. Bu yöntem kuyruğun önünden bir veya daha fazla ileti alır, ancak iletinin görünürlüğünü değiştirmez. Varsayılan olarak, peekMessages tek bir iletiye göz atar.

Bu kodu işlevin main sonuna ekleyin:

console.log("\nPeek at the messages in the queue...");

// 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("\t", peekedMessages.peekedMessageItems[i].messageText);
}

Kuyruktaki iletiyi güncelleştirme

yöntemini çağırarak iletinin içeriğini güncelleştirin updateMessage . Bu yöntem, iletinin görünürlük zaman aşımını ve içeriğini değiştirebilir. İleti içeriğinin boyutu 64 KB'a kadar olan UTF-8 kodlanmış bir dize olmalıdır. Yeni içerikle birlikte, kodda messageId daha önce kaydedilmiş olan yanıttan ve popReceipt yanıttan iletin. Özellikler hangi iletinin sendMessageResponse güncelleştirilecek olduğunu belirler.

console.log("\nUpdating the third message in the queue...");

// Update a message using the response saved when calling sendMessage earlier
updateMessageResponse = await queueClient.updateMessage(
    sendMessageResponse.messageId,
    sendMessageResponse.popReceipt,
    "Third message has been updated"
);

console.log("Message updated, requestId:", updateMessageResponse.requestId);

Kuyruk uzunluğu alma

getProperties yöntemi, kuyrukta bekleyen yaklaşık ileti sayısı da dahil olmak üzere kuyruk hakkındaki meta verileri döndürür.

const properties = await queueClient.getProperties();
console.log("Approximate queue length: ", properties.approximateMessagesCount);

Kuyruktan ileti alma

yöntemini çağırarak receiveMessages daha önce eklenen iletileri indirin. numberOfMessages alanında, bu çağrı için alınacak ileti sayısı üst sınırını geçirin.

Bu kodu işlevin main sonuna ekleyin:

console.log("\nReceiving messages from the queue...");

// Get messages from the queue
const receivedMessagesResponse = await queueClient.receiveMessages({ numberOfMessages : 5 });

console.log("Messages received, requestId:", receivedMessagesResponse.requestId);

yöntemini çağırırkenreceiveMessages, isteğe bağlı olarak, ileti almayı özelleştirmek için QueueReceiveMessageOptions içinde değerler belirtebilirsiniz. için numberOfMessages, kuyruktan alınacak ileti sayısı olan bir değer belirtebilirsiniz. Varsayılan değer 1 iletidir ve en fazla 32 iletidir. Ayrıca, zaman aşımı dönemi için visibilityTimeoutdiğer işlemlerden gelen iletileri gizleyen bir değeri de belirtebilirsiniz. Varsayılan değer 30 saniyedir.

Kuyruktan iletileri silme

İletiler alındıktan ve işlendikten sonra kuyruktan silebilirsiniz. Bu durumda, işlem yalnızca konsolda iletiyi görüntüler.

yöntemini çağırarak deleteMessage iletileri silin. Açıkça silinmeyen tüm iletiler sonunda bunları işlemek için başka bir şans için kuyrukta yeniden görünür hale gelir.

Bu kodu işlevin main sonuna ekleyin:

// 'Process' and delete messages from the queue
for (i = 0; i < receivedMessagesResponse.receivedMessageItems.length; i++) {
    receivedMessage = receivedMessagesResponse.receivedMessageItems[i];

    // 'Process' the message
    console.log("\tProcessing:", receivedMessage.messageText);

    // Delete the message
    const deleteMessageResponse = await queueClient.deleteMessage(
        receivedMessage.messageId,
        receivedMessage.popReceipt
    );
    console.log("\tMessage deleted, requestId:", deleteMessageResponse.requestId);
}

Bir kuyruk silme

Aşağıdaki kod, yöntemini kullanarak delete kuyruğu silerek uygulamanın oluşturduğu kaynakları temizler.

Bu kodu işlevin main sonuna ekleyin ve dosyayı kaydedin:

// Delete the queue
console.log("\nDeleting queue...");
const deleteQueueResponse = await queueClient.delete();
console.log("Queue deleted, requestId:", deleteQueueResponse.requestId);

Kodu çalıştırma

Bu uygulama bir Azure kuyruğuna üç ileti oluşturur ve ekler. Kod, kuyruktaki iletileri listeler, ardından kuyruğu silmeden önce alır ve siler.

Konsol pencerenizde, dosyayı içeren index.js dizine gidin ve uygulamayı çalıştırmak için aşağıdaki node komutu kullanın.

node index.js

Uygulamanın çıkışı aşağıdaki örneğe benzer:

Azure Queue Storage client library - JavaScript quickstart sample

Creating queue...
         quickstart<UUID>
Queue created, requestId: 5c0bc94c-6003-011b-7c11-b13d06000000

Adding messages to the queue...
Messages added, requestId: a0390321-8003-001e-0311-b18f2c000000

Peek at the messages in the queue...
         First message
         Second message
         Third message

Updating the third message in the queue...
Message updated, requestId: cb172c9a-5003-001c-2911-b18dd6000000

Receiving messages from the queue...
Messages received, requestId: a039036f-8003-001e-4811-b18f2c000000
        Processing: First message
        Message deleted, requestId: 4a65b82b-d003-00a7-5411-b16c22000000
        Processing: Second message
        Message deleted, requestId: 4f0b2958-c003-0030-2a11-b10feb000000
        Processing: Third message has been updated
        Message deleted, requestId: 6c978fcb-5003-00b6-2711-b15b39000000

Deleting queue...
Queue deleted, requestId: 5c0bca05-6003-011b-1e11-b13d06000000

Done

Hata ayıklayıcınızdaki kodda ilerleyin ve işlem boyunca Azure portalınızı denetleyin. Kuyruktaki iletilerin oluşturulduğunu ve silindiğini doğrulamak için depolama hesabınızı denetleyin.

Sonraki adımlar

Bu hızlı başlangıçta, JavaScript kodu kullanarak kuyruk oluşturmayı ve buna ileti eklemeyi öğrendiniz. Ardından iletileri göz atıp almayı ve silmeyi öğrendiniz. Son olarak, ileti kuyruğu silmeyi öğrendinsiniz.

Öğreticiler, örnekler, hızlı başlangıçlar ve diğer belgeler için şu adresi ziyaret edin: