Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Очередь службы хранилища Azure предоставляет облачные сообщения между компонентами приложения. При разработке приложений для масштабирования компоненты приложений часто отделяются, чтобы они могли масштабироваться независимо. Хранилище очередей обеспечивает асинхронное обмен сообщениями между компонентами приложений, независимо от того, работают ли они в облаке, на рабочем столе, на локальном сервере или на мобильном устройстве. Хранилище очередей также поддерживает управление асинхронными задачами и рабочими потоками процесса.
Этот проект предоставляет клиентскую библиотеку в JavaScript, которая упрощает использование службы очередей службы хранилища Azure.
Используйте клиентские библиотеки в этом пакете, чтобы:
- Получение и задание свойств службы очередей
- Create/List/Delete Queues
- Отправка, получение, просмотр, очистка, обновление и удаление сообщений очереди
Key links:
- Source code
- Package (npm)
- Справочная документация по API
- Product documentation
- Samples
- REST API очереди службы хранилища Azure
Getting started
Поддерживаемые в настоящее время среды
- LTS версии Node.js
- Последние версии Safari, Chrome, Edge и Firefox.
See our support policy for more details.
Prerequisites
Установка пакета
Предпочтительный способ установки клиентской библиотеки очереди службы хранилища Azure для JavaScript — использовать диспетчер пакетов npm. Введите следующее в окно терминала:
npm install @azure/storage-queue
Проверка подлинности клиента
Служба хранилища Azure поддерживает несколько способов проверки подлинности. Чтобы взаимодействовать со службой хранилища очередей Azure, необходимо создать экземпляр клиента хранилища — QueueServiceClient
или QueueClient
, например. Дополнительные сведения о проверке подлинности см. в примерах для создания QueueServiceClient
.
- Azure Active Directory
- Shared Key
- подписей общего доступа
Azure Active Directory
Служба хранилища очередей Azure поддерживает использование Azure Active Directory для проверки подлинности запросов к своим API. Пакет @azure/identity
предоставляет различные типы учетных данных, которые приложение может использовать для этого. Чтобы приступить к работе, ознакомьтесь с README для @azure/identity
получения дополнительных сведений и примеров.
Compatibility
Эта библиотека совместима с Node.js и браузерами и проверена на основе версий LTS Node.js (>=8.16.0) и последних версий Chrome, Firefox и Edge.
Web Workers
Эта библиотека требует, чтобы некоторые объекты DOM были глобально доступны при использовании в браузере, которые веб-работники по умолчанию не делают доступными. Эти библиотеки необходимо заполнить, чтобы эта библиотека работала в веб-рабочих нагрузках.
Дополнительные сведения см. в нашей документации по использованию пакета SDK Azure для JS в веб-рабочих
Эта библиотека зависит от следующих API-интерфейсов DOM, которые нуждаются во внешних полизаполнениях, загруженных при использовании в веб-рабочих нагрузках:
Различия между Node.js и браузерами
Существуют различия между средой выполнения Node.js и браузерами. При начале работы с этой библиотекой обратите внимание на API-интерфейсы или классы, помеченные "ТОЛЬКО ДОСТУПНО В СРЕДЕ ВЫПОЛНЕНИЯ NODE.JS" или "ТОЛЬКО ДОСТУПНЫ В БРАУЗЕРАХ".
Следующие функции, интерфейсы, классы или функции доступны только в Node.js
- Авторизация общего ключа на основе имени учетной записи и ключа учетной записи
StorageSharedKeyCredential
- Создание подписанного URL-адреса (SAS)
generateAccountSASQueryParameters()
generateQueueSASQueryParameters()
JavaScript Bundle
Чтобы использовать эту клиентную библиотеку в браузере, сначала необходимо использовать пакет. For details on how to do this, please refer to our bundling documentation.
CORS
Необходимо настроить правила совместного использования ресурсов (CORS)
Например, можно создать следующие параметры CORS для отладки. Но настройте параметры тщательно в соответствии с вашими требованиями в рабочей среде.
- Допустимые источники: *
- Разрешенные команды: DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT
- Разрешенные заголовки: *
- Открытые заголовки: *
- Максимальный возраст (в секундах): 86400
Key concepts
Очередь — это хранилище данных в учетной записи службы очередей службы хранилища Azure для отправки и получения сообщений между подключенными клиентами.
Ключевые типы данных в нашей библиотеке, связанные с этими службами:
- A
QueueServiceClient
represents a connection (via a URL) to a given storage account in the Azure Storage Queue service and provides APIs for manipulating its queues. Он проходит проверку подлинности в службе и может использоваться для создания объектовQueueClient
, а также для создания, удаления, удаления очередей списков из службы. - A
QueueClient
represents a single queue in the storage account. Его можно использовать для управления сообщениями очереди, например для отправки, получения и просмотра сообщений в очереди.
Examples
Импорт пакета
Чтобы использовать клиенты, импортируйте пакет в файл:
import * as AzureStorageQueue from "@azure/storage-queue";
Кроме того, выборочно импортируйте только необходимые типы:
import { QueueServiceClient, StorageSharedKeyCredential } from "@azure/storage-queue";
Создание клиента службы очередей
Для QueueServiceClient
требуется URL-адрес службы очередей и учетные данные доступа. Он также при необходимости принимает некоторые параметры в параметре options
.
с DefaultAzureCredential
из пакета @azure/identity
Рекомендуемый способ создания экземпляра QueueServiceClient
Настройка: Справочник — авторизация доступа к большим двоичным объектам и очередям с помощью Azure Active Directory из клиентского приложения — https://learn.microsoft.com/azure/storage/common/storage-auth-aad-app
Регистрация нового приложения AAD и предоставление разрешений на доступ к службе хранилища Azure от имени вошедшего пользователя
- Зарегистрируйте новое приложение в Azure Active Directory(в azure-portal) - https://learn.microsoft.com/azure/active-directory/develop/quickstart-register-app
- В разделе
API permissions
выберитеAdd a permission
и выберитеMicrosoft APIs
. - Выберите
Azure Storage
и установите флажок рядом сuser_impersonation
и щелкнитеAdd permissions
. Это позволит приложению получить доступ к службе хранилища Azure от имени вошедшего пользователя.
Предоставление доступа к данным очереди хранилища Azure с помощью RBAC на портале Azure
- Роли RBAC для больших двоичных объектов и очередей - https://learn.microsoft.com/azure/storage/common/storage-auth-aad-rbac-portal.
- На портале Azure перейдите к учетной записи хранения и назначьте участнику данных очереди хранилища роль зарегистрированного приложения AAD на вкладке
Access control (IAM)
(на левой панели навигации учетной записи хранения на портале Azure).
Настройка среды для примера
- На странице обзора приложения AAD запишите
CLIENT ID
иTENANT ID
. На вкладке "Сертификаты & секреты" создайте секрет и запишите это вниз. - Убедитесь, что у вас есть
AZURE_TENANT_ID
,AZURE_CLIENT_ID
,AZURE_CLIENT_SECRET
в качестве переменных среды для успешного выполнения примера (можно использовать process.env).
- На странице обзора приложения AAD запишите
import { DefaultAzureCredential } from "@azure/identity";
import { QueueServiceClient } from "@azure/storage-queue";
const account = "<account>";
const credential = new DefaultAzureCredential();
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
credential,
);
[Примечание. Приведенные выше шаги предназначены только для Node.js]
использование строки подключения
Кроме того, можно создать экземпляр QueueServiceClient
с помощью статического метода fromConnectionString()
с полной строкой подключения в качестве аргумента. (Строка подключения может быть получена на портале Azure.) [ДОСТУПНО ТОЛЬКО В СРЕДЕ ВЫПОЛНЕНИЯ NODE.JS]
import { QueueServiceClient } from "@azure/storage-queue";
const connectionString = "<connection string>";
const queueServiceClient = QueueServiceClient.fromConnectionString(connectionString);
с StorageSharedKeyCredential
В качестве альтернативы вы создаете экземпляр a QueueServiceClient
с StorageSharedKeyCredential
помощью прохода accountName
и accountKey
в качестве аргументов. (Значения имени учетной записи и ключа учетной записи можно получить на портале Azure.) [ДОСТУПНО ТОЛЬКО В NODE.JS ВРЕМЕНИ ВЫПОЛНЕНИЯ]
import { StorageSharedKeyCredential, QueueServiceClient } from "@azure/storage-queue";
// Enter your storage account name and shared key
const account = "<account>";
const accountKey = "<accountkey>";
// Use StorageSharedKeyCredential with storage account and account key
// StorageSharedKeyCredential is only available in Node.js runtime, not in browsers
const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
sharedKeyCredential,
{
retryOptions: { maxTries: 4 }, // Retry options
userAgentOptions: {
userAgentPrefix: "BasicSample V10.0.0",
}, // Customized telemetry string
},
);
с маркером SAS
Кроме того, можно создать экземпляр QueueServiceClient
с подписанными URL-адресами (SAS). Маркер SAS можно получить на портале Azure или создать его с помощью generateAccountSASQueryParameters()
.
import { QueueServiceClient } from "@azure/storage-queue";
const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net?${sas}`,
);
Вывод списка очередей в этой учетной записи
Используйте функцию QueueServiceClient.listQueues()
для итерации очередей с новым синтаксисом for-await-of
:
import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";
const account = "<account>";
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
new DefaultAzureCredential(),
);
let i = 1;
for await (const item of queueServiceClient.listQueues()) {
console.log(`Queue${i++}: ${item.name}`);
}
Кроме того, без for-await-of
:
import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";
const account = "<account>";
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
new DefaultAzureCredential(),
);
let i = 1;
const iterator = queueServiceClient.listQueues();
let { done, value } = await iterator.next();
while (!done) {
console.log(`Queue${i++}: ${value.name}`);
({ done, value } = await iterator.next());
}
For a complete sample on iterating queues please see samples/v12/typescript/listQueues.ts.
Создание новой очереди
Используйте функцию QueueServiceClient.getQueueClient()
для создания новой очереди.
import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";
const account = "<account>";
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
new DefaultAzureCredential(),
);
const queueName = "<valid queue name>";
const queueClient = queueServiceClient.getQueueClient(queueName);
const createQueueResponse = await queueClient.create();
console.log(
`Created queue ${queueName} successfully, service assigned request Id: ${createQueueResponse.requestId}`,
);
Отправка сообщения в очередь
Используйте sendMessage()
для добавления сообщения в очередь:
import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";
const account = "<account>";
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
new DefaultAzureCredential(),
);
const queueName = "<valid queue name>";
const queueClient = queueServiceClient.getQueueClient(queueName);
// Send a message into the queue using the sendMessage method.
const sendMessageResponse = await queueClient.sendMessage("Hello World!");
console.log(
`Sent message successfully, service assigned message Id: ${sendMessageResponse.messageId}, service assigned request Id: ${sendMessageResponse.requestId}`,
);
Просмотр сообщения
QueueClient.peekMessages()
позволяет посмотреть на одно или несколько сообщений перед очередью. Этот вызов не предотвращает доступ к другим кодам для просмотра сообщений.
import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";
const account = "<account>";
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
new DefaultAzureCredential(),
);
const queueName = "<valid queue name>";
const queueClient = queueServiceClient.getQueueClient(queueName);
const peekMessagesResponse = await queueClient.peekMessages();
console.log(`The peeked message is: ${peekMessagesResponse.peekedMessageItems[0].messageText}`);
Обработка сообщения
Сообщения обрабатываются двумя шагами.
- Первый вызов
queueClient.receiveMessages()
. Это делает сообщения невидимыми для других сообщений считывания кода из этой очереди в течение 30 секунд. - При обработке сообщения вызовите
queueClient.deleteMessage()
сpopReceipt
сообщения.
Если код не может обработать сообщение из-за сбоя оборудования или программного обеспечения, этот двухэтапный процесс гарантирует, что другой экземпляр кода может получить то же сообщение и повторить попытку.
import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";
const account = "<account>";
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
new DefaultAzureCredential(),
);
const queueName = "<valid queue name>";
const queueClient = queueServiceClient.getQueueClient(queueName);
const response = await queueClient.receiveMessages();
if (response.receivedMessageItems.length === 1) {
const receivedMessageItem = response.receivedMessageItems[0];
console.log(`Processing & deleting message with content: ${receivedMessageItem.messageText}`);
const deleteMessageResponse = await queueClient.deleteMessage(
receivedMessageItem.messageId,
receivedMessageItem.popReceipt,
);
console.log(
`Delete message successfully, service assigned request Id: ${deleteMessageResponse.requestId}`,
);
}
Удаление очереди
import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";
const account = "<account>";
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
new DefaultAzureCredential(),
);
const queueName = "<valid queue name>";
const queueClient = queueServiceClient.getQueueClient(queueName);
const deleteQueueResponse = await queueClient.delete();
console.log(
`Deleted queue successfully, service assigned request Id: ${deleteQueueResponse.requestId}`,
);
A complete example of simple QueueServiceClient
scenarios is at samples/v12/typescript/src/queueClient.ts.
Troubleshooting
Включение ведения журнала может помочь выявить полезные сведения о сбоях. Чтобы просмотреть журнал HTTP-запросов и ответов, задайте для переменной среды AZURE_LOG_LEVEL
значение info
. Кроме того, ведение журнала можно включить во время выполнения путем вызова setLogLevel
в @azure/logger
:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Next steps
Дополнительные примеры кода
- Примеры хранилища очередей
- тестовые случаи хранилища очередей
Contributing
If you'd like to contribute to this library, please read the contributing guide to learn more about how to build and test the code.
Дополнительные сведения о настройке тестовой среды для библиотек хранилища см. в руководстве по
Azure SDK for JavaScript