Azure Storage Queue SDK Samples (JavaScript)
Explore these samples to learn how to interact with Azure Storage Queues using the JavaScript SDK. This guide covers common operations like sending, receiving, and deleting messages.
1. Creating a Queue Client
Initialize a `QueueClient` to manage your queues.
// Import the QueueClient
const { QueueClient } = require("@azure/storage-queue");
// Replace with your actual connection string
const connectionString = "YOUR_AZURE_STORAGE_CONNECTION_STRING";
const queueName = "my-sample-queue";
// Create a new QueueClient
const queueClient = new QueueClient(connectionString, queueName);
console.log(`Queue client created for queue: ${queueName}`);
2. Creating a Queue
Use the client to create a new queue if it doesn't exist.
async function createQueue() {
try {
const createResponse = await queueClient.create();
console.log(`Queue "${queueName}" created successfully.`, createResponse);
} catch (error) {
if (error.statusCode === 409) {
console.log(`Queue "${queueName}" already exists.`);
} else {
console.error("Error creating queue:", error);
}
}
}
// Call the function to create the queue
// createQueue();
Explanation: The create() method sends a request to the Azure Storage service to create the specified queue. It handles cases where the queue might already exist.
3. Sending a Message
Add messages to your queue.
async function sendMessage(messageText) {
try {
const response = await queueClient.sendMessage(messageText);
console.log(`Message sent: "${messageText}"`, response);
return response.messageId;
} catch (error) {
console.error("Error sending message:", error);
return null;
}
}
// Example usage:
// const messageId = await sendMessage("Hello Azure Queue!");
// console.log(`Sent message with ID: ${messageId}`);
Explanation: The sendMessage() method enqueues a new message. The message content is passed as a string. The response includes a messageId and popReceipt which are important for processing later.
4. Receiving Messages
Retrieve messages from the queue.
async function receiveMessages() {
console.log("Attempting to receive messages...");
try {
// You can specify numberOfMessages (1-32) and visibilityTimeout (seconds)
const response = await queueClient.receiveMessages({ numberOfMessages: 5, visibilityTimeout: 30 });
if (response.receivedMessages && response.receivedMessages.length > 0) {
console.log(`Received ${response.receivedMessages.length} messages:`);
for (const message of response.receivedMessages) {
console.log(`- Message ID: ${message.messageId}, Content: "${message.messageText}"`);
// You would typically process the message here
// and then delete it or update its visibility.
}
return response.receivedMessages;
} else {
console.log("No messages in the queue.");
return [];
}
} catch (error) {
console.error("Error receiving messages:", error);
return [];
}
}
// Example usage:
// const receivedMessages = await receiveMessages();
Explanation: The receiveMessages() method retrieves messages. The visibilityTimeout parameter makes the message invisible to other consumers for a specified duration, allowing safe processing. After processing, the message should be deleted.
5. Deleting a Message
Remove a message from the queue after it has been successfully processed.
async function deleteMessage(messageId, popReceipt) {
try {
await queueClient.deleteMessage(messageId, popReceipt);
console.log(`Message ${messageId} deleted successfully.`);
} catch (error) {
console.error(`Error deleting message ${messageId}:`, error);
}
}
// Example usage (assuming you have messageId and popReceipt from receiveMessages):
// if (receivedMessages && receivedMessages.length > 0) {
// const messageToDelete = receivedMessages[0]; // Delete the first message received
// await deleteMessage(messageToDelete.messageId, messageToDelete.popReceipt);
// }
Explanation: The deleteMessage() method permanently removes a message from the queue. You must provide both the messageId and the popReceipt obtained when the message was retrieved.
6. Clearing the Queue
Remove all messages from the queue.
async function clearQueue() {
try {
await queueClient.clearMessages();
console.log(`Queue "${queueName}" cleared successfully.`);
} catch (error) {
console.error("Error clearing queue:", error);
}
}
// Example usage:
// clearQueue();
Explanation: The clearMessages() method is a convenient way to empty the entire queue.
7. Deleting the Queue
Remove the queue itself from your storage account.
async function deleteQueue() {
try {
await queueClient.delete();
console.log(`Queue "${queueName}" deleted successfully.`);
} catch (error) {
console.error("Error deleting queue:", error);
}
}
// Example usage:
// deleteQueue();
Explanation: The delete() method removes the queue and all its messages.