Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Azure Storage Queue felhőbeli üzenetküldést biztosít az alkalmazásösszetevők között. A méretezési alkalmazások tervezésekor az alkalmazásösszetevőket gyakran leválasztják, hogy egymástól függetlenül skálázhatók legyenek. A Queue Storage aszinkron üzenetküldést biztosít az alkalmazás-összetevők közötti kommunikációhoz, függetlenül attól, hogy a felhőben, az asztalon, egy helyszíni kiszolgálón vagy egy mobileszközön futnak. A queue storage emellett támogatja az aszinkron feladatok kezelését és a folyamatmunkafolyamatok kiépítését.
Ez a projekt egy JavaScript-ügyfélkódtárat biztosít, amely megkönnyíti az Azure Storage Queue szolgáltatás használatát.
A csomagban található ügyfélkódtárak használatával:
- Üzenetsor-szolgáltatás tulajdonságainak lekérése/beállítása
- Várólisták létrehozása/listázása/törlése
- Üzenetsor-üzenetek küldése/fogadása/betekintő/törlése/frissítése/törlése
Főbb hivatkozások:
- forráskód
- Csomag (npm)
- API referenciadokumentációja
- termékdokumentáció
- Samples
- Azure Storage Queue REST API-k
Kezdő lépések
Jelenleg támogatott környezetek
- A Node.js LTS-verziói
- A Safari, a Chrome, az Edge és a Firefox legújabb verziói.
További részletekért tekintse meg támogatási szabályzatunkat .
Prerequisites
A csomag telepítése
A JavaScripthez készült Azure Storage Queue ügyfélkódtár telepítésének elsődleges módja az npm-csomagkezelő használata. Írja be a következőt egy terminálablakba:
npm install @azure/storage-queue
Az ügyfél hitelesítése
Az Azure Storage számos módon támogatja a hitelesítést. Az Azure Queue Storage szolgáltatás használatához létre kell hoznia egy Storage-ügyfélpéldányt – például QueueServiceClient vagy QueueClient. A
Azure Active Directory
Az Azure Queue Storage szolgáltatás támogatja az Azure Active Directory használatát az API-khoz érkező kérések hitelesítéséhez. A @azure/identity csomag számos hitelesítő adattípust biztosít, amelyeket az alkalmazás használhat erre. További részletekért és mintákért tekintse meg a
Compatibility
Ez a kódtár kompatibilis a Node.js és a böngészőkkel, és az LTS Node.js (>=8.16.0) és a Chrome, a Firefox és az Edge legújabb verzióival van érvényesítve.
Webes dolgozók
Ehhez a kódtárhoz bizonyos DOM-objektumoknak globálisan elérhetővé kell lenniük a böngészőben való használatkor, amelyeket a webmunkások alapértelmezés szerint nem tesznek elérhetővé. Ezeket a függvénytárat a webmunkásokban való működéshez többszörösen kell feltöltenie.
További információkért tekintse meg dokumentációnkat az Azure SDK for JS webmunkásokban való használatához
Ez a kódtár a következő DOM API-któl függ, amelyek a webmunkásokban való használathoz külső polifilleket igényelnek:
Különbségek a Node.js és a böngészők között
A Node.js és a böngésző futtatókörnyezete között különbségek vannak. A kódtár használatbavételekor figyelje meg a "CSAK ELÉRHETŐ NODE.JS FUTTATÓKÖRNYEZETBEN" megjelölt API-kat vagy osztályokat, vagy "CSAK BÖNGÉSZŐBEN ELÉRHETŐ".
Az alábbi funkciók, felületek, osztályok vagy függvények csak Node.js
- Megosztott kulcs engedélyezése a fióknév és a fiókkulcs alapján
StorageSharedKeyCredential
- Közös hozzáférésű jogosultságkód (SAS) létrehozása
generateAccountSASQueryParameters()generateQueueSASQueryParameters()
JavaScript-csomag
Ahhoz, hogy ezt az ügyfélkódtárat a böngészőben használhassa, először egy kötegelőt kell használnia. Ennek módjáról a kötegelési dokumentációban olvashat.
CORS
Ha böngészőkre van szüksége, be kell állítania forrásközi erőforrás-megosztási (CORS) szabályokat a tárfiókhoz. Nyissa meg az Azure Portalt és az Azure Storage Explorert, keresse meg a tárfiókot, hozzon létre új CORS-szabályokat a blob-/üzenetsor-/fájl-/táblaszolgáltatás(ok)hoz.
A hibakereséshez például az alábbi CORS-beállításokat hozhatja létre. Azonban az éles környezetben a követelményeknek megfelelően szabja testre a beállításokat.
- Engedélyezett források: *
- Engedélyezett parancsok: DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT
- Engedélyezett fejlécek: *
- Közzétett fejlécek: *
- Maximális életkor (másodperc): 86400
Főbb fogalmak
Az üzenetsor egy Azure Storage Queue szolgáltatásfiókon belüli adattár, amely üzeneteket küld vagy fogad a csatlakoztatott ügyfelek között.
Az alábbi szolgáltatásokhoz kapcsolódó kódtár főbb adattípusai a következők:
- Az A
QueueServiceClientegy kapcsolatot jelöl (URL-címen keresztül) egy adott tárfiókkal az Azure Storage Queue szolgáltatásban, és API-kat biztosít az üzenetsorok kezeléséhez. A szolgáltatás hitelesíti, ésQueueClientobjektumok létrehozására, valamint üzenetsorok létrehozására, törlésére és listázására használható a szolgáltatásból. - Az A
QueueClientegyetlen üzenetsort jelöl a tárfiókban. Segítségével módosíthatja az üzenetsor üzeneteit, például üzeneteket küldhet, fogadhat és bepillanthat az üzenetsorba.
Examples
A csomag importálása
Az ügyfelek használatához importálja a csomagot a fájlba:
import * as AzureStorageQueue from "@azure/storage-queue";
Másik lehetőségként csak a szükséges típusokat importálja szelektíven:
import { QueueServiceClient, StorageSharedKeyCredential } from "@azure/storage-queue";
A várólista-szolgáltatásügyfél létrehozása
A QueueServiceClient megköveteli az üzenetsor-szolgáltatás URL-címét és a hozzáférési hitelesítő adatokat. Emellett a options paraméter bizonyos beállításait is elfogadja.
DefaultAzureCredential csomagból származó @azure/identity
Ajánlott módszer a QueueServiceClient példányosítására
Beállítás: Referencia – Blobokhoz és üzenetsorokhoz való hozzáférés engedélyezése Azure Active Directory ügyfélalkalmazásból – https://learn.microsoft.com/azure/storage/common/storage-auth-aad-app
Új AAD-alkalmazás regisztrálása és engedélyek megadása az Azure Storage eléréséhez a bejelentkezett felhasználó nevében
- Új alkalmazás regisztrálása a Azure Active Directory (az azure-portalon) – https://learn.microsoft.com/azure/active-directory/develop/quickstart-register-app
- A
API permissionsszakaszban válassza aAdd a permission, majd aMicrosoft APIslehetőséget. - Jelölje be a
Azure Storage, és jelölje be auser_impersonationmelletti jelölőnégyzetet, majd kattintson aAdd permissionsgombra. Ez lehetővé tenné az alkalmazás számára, hogy a bejelentkezett felhasználó nevében hozzáférjen az Azure Storage-hoz.
Hozzáférés biztosítása az Azure Storage-üzenetsor adataihoz az RBAC-vel az Azure Portalon
- RBAC-szerepkörök blobokhoz és üzenetsorokhoz – . https://learn.microsoft.com/azure/storage/common/storage-auth-aad-rbac-portal
- Az Azure Portalon nyissa meg a tárfiókot, és rendeljen hozzá Storage Queue Data Contributor szerepkört a regisztrált AAD-alkalmazáshoz
Access control (IAM)lapról (a tárfiók bal oldali navigációs sávján az azure-portalon).
A minta környezetbeállítása
- Az AAD-alkalmazás áttekintési oldalán jegyezze fel a
CLIENT IDés aTENANT ID. A "Tanúsítványok & titkos kulcsok" lapon hozzon létre egy titkos kulcsot, és jegyezze fel ezt lefelé. - Győződjön meg arról, hogy
AZURE_TENANT_ID,AZURE_CLIENT_ID,AZURE_CLIENT_SECRETkörnyezeti változókkal rendelkezik a minta sikeres végrehajtásához (használhatja a process.env függvényt).
- Az AAD-alkalmazás áttekintési oldalán jegyezze fel a
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,
);
[Megjegyzés – A fenti lépések csak Node.js]
kapcsolati sztring használata
Másik lehetőségként létrehozhat egy QueueServiceClient a fromConnectionString() statikus metódussal, argumentumként pedig a teljes kapcsolati sztringgel. (A kapcsolati sztring az Azure Portalról kérhető le.) [CSAK NODE.JS FUTTATÓKÖRNYEZETBEN ÉRHETŐ EL]
import { QueueServiceClient } from "@azure/storage-queue";
const connectionString = "<connection string>";
const queueServiceClient = QueueServiceClient.fromConnectionString(connectionString);
StorageSharedKeyCredential
Alternatív megoldásként példányosíthatja az a-t QueueServiceClientStorageSharedKeyCredential átadással accountName és accountKey argumentumként. (A fióknév és a fiókkulcs értékei a Azure Portal.) [CSAK NODE.JS FUTÁSIDŐBEN ÉRHETŐ EL]
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-jogkivonattal
Emellett egy QueueServiceClient is létrehozhat közös hozzáférésű jogosultságkódokkal (SAS). Az SAS-jogkivonatot lekérheti az Azure Portalról, vagy létrehozhat egyet generateAccountSASQueryParameters()használatával.
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}`,
);
Üzenetsorok listázása ebben a fiókban
Az üzenetsorok iterálásához használja QueueServiceClient.listQueues() függvényt az új for-await-of szintaxissal:
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}`);
}
Másik lehetőségként for-await-ofnélkül:
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());
}
Az üzenetsorok iterálásával kapcsolatos teljes mintát a samples/v12/typescript/listQueues.ts című témakörben találja.
Új üzenetsor létrehozása
Új üzenetsor létrehozása QueueServiceClient.getQueueClient() függvénnyel.
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}`,
);
Üzenet küldése az üzenetsorba
Üzenet hozzáadása az üzenetsorhoz a sendMessage() használatával:
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}`,
);
Üzenet betekintője
QueueClient.peekMessages() lehetővé teszi, hogy egy vagy több üzenetet tekintsen meg az üzenetsor előtt. Ez a hívás nem akadályozza meg, hogy más kódok hozzáférjenek a betekintett üzenetekhez.
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}`);
Üzenet feldolgozása
Az üzenetek feldolgozása két lépésben történik.
- Első hívás
queueClient.receiveMessages(). Ez az üzenetsorból érkező üzeneteket az alapértelmezett 30 másodpercig láthatatlanná teszi más kódolvasók számára. - Ha az üzenet feldolgozása befejeződött, hívja meg
queueClient.deleteMessage()az üzenetpopReceipt.
Ha a kód hardver- vagy szoftverhiba miatt nem tudja feldolgozni az üzenetet, ez a kétlépéses folyamat biztosítja, hogy a kód egy másik példánya is megkapja ugyanazt az üzenetet, és próbálkozzon újra.
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}`,
);
}
Üzenetsor törlése
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}`,
);
Az egyszerű QueueServiceClient forgatókönyvek teljes példája a samples/v12/typescript/src/queueClient.ts oldalon található.
Troubleshooting
A naplózás engedélyezése segíthet a hibákról szóló hasznos információk feltárásában. A HTTP-kérések és válaszok naplójának megtekintéséhez állítsa a AZURE_LOG_LEVEL környezeti változót info. Másik lehetőségként a naplózás futásidőben is engedélyezhető a setLogLevel meghívásával a @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Következő lépések
További kódminták
Contributing
Ha hozzá szeretne járulni ehhez a kódtárhoz, olvassa el a közreműködői útmutatót , amelyből többet is megtudhat a kód összeállításáról és teszteléséről.
A tárolótárak tesztkörnyezetének beállításával kapcsolatos további információkért tekintse meg társpecifikus útmutatót.
Azure SDK for JavaScript