Üzenetek küldése és fogadása az Azure Service Bus-üzenetsorokból (JavaScript)
Az oktatóanyagban az alábbi lépéseket fogja végrehajtani:
- Service Bus-névtér létrehozása az Azure Portal használatával.
- Service Bus-üzenetsor létrehozása az Azure Portal használatával.
- Írjon egy JavaScript-alkalmazást a @azure/service-bus csomag használatához:
- Üzenetkészlet küldése az üzenetsorba.
- Fogadja ezeket az üzeneteket az üzenetsorból.
Feljegyzés
Ez a rövid útmutató lépésről lépésre ismerteti az üzenetek Service Bus-üzenetsorba való küldésének és fogadásának egyszerű forgatókönyvét. Az Azure Service Bus előre elkészített JavaScript- és TypeScript-mintáit a GitHub Azure SDK for JavaScript-adattárában találja.
Előfeltételek
Ha még nem ismerkedik a szolgáltatással, a rövid útmutató előtt tekintse meg a Service Bus áttekintését .
- Azure-előfizetés. Az oktatóanyag elvégzéséhez egy Azure-fiókra lesz szüksége. Aktiválhatja az MSDN-előfizetői előnyöket , vagy regisztrálhat egy ingyenes fiókra.
- Node.js LTS
Ha ezt a rövid útmutatót saját Azure-fiókjával szeretné használni, a következőkre van szüksége:
- Telepítse az Azure CLI-t, amely jelszó nélküli hitelesítést biztosít a fejlesztői gép számára.
- Jelentkezzen be azure-fiókjával a terminálon vagy a parancssorban a következővel
az login
: . - Használja ugyanazt a fiókot, amikor hozzáadja a megfelelő adatszerepkört az erőforráshoz.
- Futtassa a kódot ugyanabban a terminálban vagy parancssorban.
- Jegyezze fel a Service Bus-névtér üzenetsornevét . Erre szüksége lesz a kódban.
Feljegyzés
Ez az oktatóanyag olyan mintákkal működik, amelyeket a Nodejs használatával másolhat és futtathat. A Node.js-alkalmazások létrehozásával kapcsolatos utasításokért lásd : Node.js-alkalmazás létrehozása és üzembe helyezése Azure-webhelyen vagy Node.js felhőszolgáltatás a Windows PowerShell használatával.
Névtér létrehozása az Azure Portalon
A Service Bus-üzenetküldési entitások Azure-ban való használatának megkezdéséhez először létre kell hoznia egy, az Azure-ban egyedi névvel rendelkező névteret. A névtér egy hatókör-tárolót biztosít a Service Bus-erőforrásokhoz (üzenetsorokhoz, témakörökhöz stb.) az alkalmazásban.
Névtér létrehozása:
Jelentkezzen be az Azure Portalra.
Lépjen a Minden szolgáltatás lapra.
A bal oldali navigációs sávon válassza az Integráció lehetőséget a kategóriák listájából, vigye az egérmutatót a Service Bus fölé, majd válassza a + Service Bus csempén található gombot.
A Névtér létrehozása lap Alapszintű címkéjében kövesse az alábbi lépéseket:
Előfizetés esetén válassza ki azt az Azure-előfizetést, amelyben létre szeretné hozni a névteret.
Erőforráscsoport esetén válasszon ki egy meglévő erőforráscsoportot, amelyben a névtér él, vagy hozzon létre egy újat.
Adja meg a névtér nevét. A névtér nevének meg kell felelnie a következő elnevezési konvencióknak:
- A névnek egyedinek kell lennie az Azure-ban. A rendszer azonnal ellenőrzi, hogy a név elérhető-e.
- A név hossza legalább 6 és legfeljebb 50 karakter lehet.
- A név csak betűket, számokat, "-" kötőjeleket tartalmazhat.
- A névnek betűvel kell kezdődnie, és betűvel vagy számmal kell végződnie.
- A név nem "-sb" vagy "-mgmt" végződésű.
A Hely területen válassza ki azt a régiót, amelyben a névteret üzemeltetni kell.
Tarifacsomag esetén válassza ki a névtérhez tartozó tarifacsomagot (Alapszintű, Standard vagy Prémium). Ebben a rövid útmutatóban válassza a Standard lehetőséget.
Fontos
Ha témaköröket és előfizetéseket szeretne használni, válassza a Standard vagy a Premium lehetőséget. Az alapszintű tarifacsomag nem támogatja a témaköröket/előfizetéseket.
Ha a Prémium tarifacsomagot választotta, adja meg az üzenetkezelési egységek számát. A prémium szint erőforrás-elkülönítést biztosít a CPU és a memória szintjén, így minden számítási feladat külön fut. Ennek az erőforrás-tárolónak a neve üzenetkezelési egység. A prémium szintű névtér legalább egy üzenetkezelési egységgel rendelkezik. Minden Service Bus Premium-névtérhez választhat 1, 2, 4, 8 vagy 16 üzenetkezelési egységet. További információ: Service Bus Premium Messaging.
Válassza a Véleményezés + létrehozás lehetőséget a lap alján.
A Véleményezés + létrehozás lapon tekintse át a beállításokat, és válassza a Létrehozás lehetőséget.
Miután az erőforrás üzembe helyezése sikeres volt, válassza az Erőforrás megnyitása lehetőséget az üzembe helyezési lapon.
Megjelenik a service bus-névtér kezdőlapja.
Üzenetsor létrehozása az Azure Portalon
A Service Bus Névtér lapján válassza az Üzenetsorok lehetőséget a bal oldali navigációs menüben.
Az Üzenetsorok lapon válassza az eszköztár + Üzenetsor lehetőséget.
Adja meg az üzenetsor nevét, és hagyja meg a többi értéket az alapértelmezett értékekkel.
Most válassza a Létrehozás lehetőséget.
Az alkalmazás hitelesítése az Azure-ban
Ez a rövid útmutató az Azure Service Bushoz való csatlakozás két módját mutatja be: jelszó nélküli és kapcsolati sztring.
Az első lehetőség bemutatja, hogyan használhatja a biztonsági tagot a Microsoft Entra-azonosítóban és a szerepköralapú hozzáférés-vezérlésben (RBAC) a Service Bus-névtérhez való csatlakozáshoz. Nem kell aggódnia amiatt, hogy a kódban, a konfigurációs fájlban vagy egy biztonságos tárolóban, például az Azure Key Vaultban keményen kódolt kapcsolati sztring kell lennie.
A második lehetőség bemutatja, hogyan csatlakozhat egy Service Bus-névtérhez egy kapcsolati sztring. Ha még nem ismerkedik az Azure-sal, könnyebben követheti a kapcsolati sztring lehetőséget. A jelszó nélküli beállítást a valós alkalmazásokban és éles környezetekben javasoljuk. További információ: Hitelesítés és engedélyezés. A jelszó nélküli hitelesítésről az áttekintési oldalon olvashat bővebben.
Szerepkörök hozzárendelése a Microsoft Entra-felhasználóhoz
Helyi fejlesztéskor győződjön meg arról, hogy az Azure Service Bushoz csatlakozó felhasználói fiók rendelkezik a megfelelő engedélyekkel. Az üzenetek küldéséhez és fogadásához szüksége lesz az Azure Service Bus adattulajdonosi szerepkörére. A szerepkör hozzárendeléséhez szüksége lesz a Felhasználói hozzáférés Rendszergazda istrator szerepkörre, vagy egy másik szerepkörre, amely tartalmazza a Microsoft.Authorization/roleAssignments/write
műveletet. Azure RBAC-szerepköröket rendelhet egy felhasználóhoz az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával. További információ a szerepkör-hozzárendelések elérhető hatóköreiről a hatókör áttekintési oldalán.
Az alábbi példa hozzárendeli a szerepkört a Azure Service Bus Data Owner
felhasználói fiókjához, amely teljes hozzáférést biztosít az Azure Service Bus-erőforrásokhoz. Egy valós forgatókönyvben kövesse a Minimális jogosultság elvét, hogy a felhasználók csak a biztonságosabb éles környezethez szükséges minimális engedélyeket adják meg a felhasználóknak.
Azure beépített szerepkörök az Azure Service Bushoz
Az Azure Service Bus esetében a névterek és az összes kapcsolódó erőforrás kezelése az Azure Portalon és az Azure Resource Management API-val már védett az Azure RBAC-modell használatával. Az Azure az alábbi beépített Azure-szerepköröket biztosítja a Service Bus-névtérhez való hozzáférés engedélyezéséhez:
- Azure Service Bus-adattulajdonos: Lehetővé teszi a Service Bus-névtérhez és annak entitásaihoz (üzenetsorokhoz, témakörökhöz, előfizetésekhez és szűrőkhöz) való adathozzáférést. A szerepkör egy tagja üzeneteket küldhet és fogadhat üzenetsorokból vagy témakörökből/előfizetésekből.
- Azure Service Bus-adatküldő: Ezzel a szerepkörrel hozzáférést adhat a Service Bus-névtérhez és annak entitásaihoz.
- Azure Service Bus-adatfogadó: Ezzel a szerepkörrel hozzáférést adhat a Service Bus-névtérhez és annak entitásaihoz.
Ha egyéni szerepkört szeretne létrehozni, tekintse meg a Service Bus-műveletekhez szükséges jogosultságokat.
Microsoft Entra-felhasználó hozzáadása az Azure Service Bus tulajdonosi szerepköréhez
Adja hozzá a Microsoft Entra-felhasználónevet az Azure Service Bus-adattulajdonosi szerepkörhöz a Service Bus névtér szintjén. Lehetővé teszi, hogy a felhasználói fiók környezetében futó alkalmazások üzeneteket küldjenek egy üzenetsorba vagy egy témakörbe, és üzeneteket fogadhassanak egy üzenetsorból vagy egy témakör előfizetéséből.
Fontos
A legtöbb esetben egy-két percig tart, amíg a szerepkör-hozzárendelés propagálása az Azure-ban megtörténik. Ritkán akár nyolc percig is eltarthat. Ha hitelesítési hibákat kap a kód első futtatásakor, várjon néhány percet, és próbálkozzon újra.
Ha nem nyitotta meg a Service Bus Névtér lapját az Azure Portalon, keresse meg a Service Bus-névteret a fő keresősávon vagy a bal oldali navigációs sávon.
Az áttekintési lapon válassza a Hozzáférés-vezérlés (IAM) lehetőséget a bal oldali menüben.
A Hozzáférés-vezérlés (IAM) lapon válassza a Szerepkör-hozzárendelések lapot.
Válassza a +Hozzáadás lehetőséget a felső menüből, majd a szerepkör-hozzárendelés hozzáadása lehetőséget az eredményül kapott legördülő menüből.
A keresőmezővel szűrheti az eredményeket a kívánt szerepkörre. Ebben a példában keresse meg
Azure Service Bus Data Owner
és válassza ki az egyező eredményt. Ezután válassza a Tovább gombot.A Hozzáférés hozzárendelése területen válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget, majd válassza a + Tagok kijelölése lehetőséget.
A párbeszédpanelen keresse meg a Microsoft Entra-felhasználónevet (általában a user@domain e-mail-címét), majd válassza a Párbeszédpanel alján található Kiválasztás lehetőséget.
Válassza a Véleményezés + hozzárendelés lehetőséget a végső lapra való ugráshoz, majd a folyamat befejezéséhez a Véleményezés + hozzárendelés lehetőséget.
Csomag telepítése a Node Package Manager (NPM) használatával
A Service Bushoz szükséges npm-csomag(ok) telepítéséhez nyisson meg egy parancssort, amely az elérési útján található
npm
, módosítsa a könyvtárat arra a mappára, ahol a mintákat szeretné használni, majd futtassa ezt a parancsot.Telepítse a következő csomagokat:
npm install @azure/service-bus @azure/identity
Üzenetek küldése egy üzenetsorba
Az alábbi mintakód bemutatja, hogyan küldhet üzenetet egy üzenetsorba.
Be kell jelentkeznie az Azure CLI-vel az login
ahhoz, hogy a helyi gép biztosítsa a kódban szükséges jelszó nélküli hitelesítést.
Nyissa meg a kedvenc szerkesztőt, például a Visual Studio Code-ot.
Hozzon létre egy meghívott
send.js
fájlt, és illessze be az alábbi kódot. Ez a kód üzenetekként küldi el a tudósok nevét az üzenetsorba.Fontos
A jelszó nélküli hitelesítő adatokat a DefaultAzureCredential biztosítja.
const { ServiceBusClient } = require("@azure/service-bus"); const { DefaultAzureCredential } = require("@azure/identity"); // Replace `<SERVICE-BUS-NAMESPACE>` with your namespace const fullyQualifiedNamespace = "<SERVICE-BUS-NAMESPACE>.servicebus.windows.net"; // Passwordless credential const credential = new DefaultAzureCredential(); // name of the queue const queueName = "<QUEUE NAME>" const messages = [ { body: "Albert Einstein" }, { body: "Werner Heisenberg" }, { body: "Marie Curie" }, { body: "Steven Hawking" }, { body: "Isaac Newton" }, { body: "Niels Bohr" }, { body: "Michael Faraday" }, { body: "Galileo Galilei" }, { body: "Johannes Kepler" }, { body: "Nikolaus Kopernikus" } ]; async function main() { // create a Service Bus client using the passwordless authentication to the Service Bus namespace const sbClient = new ServiceBusClient(fullyQualifiedNamespace, credential); // createSender() can also be used to create a sender for a topic. const sender = sbClient.createSender(queueName); try { // Tries to send all messages in a single batch. // Will fail if the messages cannot fit in a batch. // await sender.sendMessages(messages); // create a batch object let batch = await sender.createMessageBatch(); for (let i = 0; i < messages.length; i++) { // for each message in the array // try to add the message to the batch if (!batch.tryAddMessage(messages[i])) { // if it fails to add the message to the current batch // send the current batch as it is full await sender.sendMessages(batch); // then, create a new batch batch = await sender.createMessageBatch(); // now, add the message failed to be added to the previous batch to this batch if (!batch.tryAddMessage(messages[i])) { // if it still can't be added to the batch, the message is probably too big to fit in a batch throw new Error("Message too big to fit in a batch"); } } } // Send the last created batch of messages to the queue await sender.sendMessages(batch); console.log(`Sent a batch of messages to the queue: ${queueName}`); // Close the sender await sender.close(); } finally { await sbClient.close(); } } // call the main function main().catch((err) => { console.log("Error occurred: ", err); process.exit(1); });
Cserélje le
<SERVICE-BUS-NAMESPACE>
a Service Bus-névteret.Cserélje le
<QUEUE NAME>
az üzenetsor nevére.Ezután futtassa a parancsot egy parancssorban a fájl végrehajtásához.
node send.js
A következő kimenetnek kell megjelennie.
Sent a batch of messages to the queue: myqueue
Üzenetek fogadása üzenetsorból
Be kell jelentkeznie az Azure CLI-vel az login
ahhoz, hogy a helyi gép biztosítsa a kódban szükséges jelszó nélküli hitelesítést.
Nyissa meg a kedvenc szerkesztőt, például a Visual Studio Code-ot
Hozzon létre egy meghívott
receive.js
fájlt, és illessze be a következő kódot.const { delay, ServiceBusClient, ServiceBusMessage } = require("@azure/service-bus"); const { DefaultAzureCredential } = require("@azure/identity"); // Replace `<SERVICE-BUS-NAMESPACE>` with your namespace const fullyQualifiedNamespace = "<SERVICE-BUS-NAMESPACE>.servicebus.windows.net"; // Passwordless credential const credential = new DefaultAzureCredential(); // name of the queue const queueName = "<QUEUE NAME>" async function main() { // create a Service Bus client using the passwordless authentication to the Service Bus namespace const sbClient = new ServiceBusClient(fullyQualifiedNamespace, credential); // createReceiver() can also be used to create a receiver for a subscription. const receiver = sbClient.createReceiver(queueName); // function to handle messages const myMessageHandler = async (messageReceived) => { console.log(`Received message: ${messageReceived.body}`); }; // function to handle any errors const myErrorHandler = async (error) => { console.log(error); }; // subscribe and specify the message and error handlers receiver.subscribe({ processMessage: myMessageHandler, processError: myErrorHandler }); // Waiting long enough before closing the sender to send messages await delay(20000); await receiver.close(); await sbClient.close(); } // call the main function main().catch((err) => { console.log("Error occurred: ", err); process.exit(1); });
Cserélje le
<SERVICE-BUS-NAMESPACE>
a Service Bus-névteret.Cserélje le
<QUEUE NAME>
az üzenetsor nevére.Ezután futtassa a parancsot egy parancssorban a fájl végrehajtásához.
node receive.js
A következő kimenetnek kell megjelennie.
Received message: Albert Einstein
Received message: Werner Heisenberg
Received message: Marie Curie
Received message: Steven Hawking
Received message: Isaac Newton
Received message: Niels Bohr
Received message: Michael Faraday
Received message: Galileo Galilei
Received message: Johannes Kepler
Received message: Nikolaus Kopernikus
Az Azure Portal Service Bus-névterének Áttekintés lapján láthatja a bejövő és kimenő üzenetek számát. Előfordulhat, hogy várnia kell egy percet, majd frissítenie kell a lapot a legújabb értékek megtekintéséhez.
Válassza ki az üzenetsort ezen az Áttekintés lapon a Service Bus Üzenetsor lapjára való navigáláshoz. Ezen a lapon is látható a bejövő és kimenő üzenetek száma. Egyéb információkat is láthat, például az üzenetsor aktuális méretét , a maximális méretet, az aktív üzenetek számát stb.
Hibaelhárítás
Ha a JavaScript-kód jelszó nélküli verziójának futtatásakor a következő hibák egyike jelenik meg, győződjön meg arról, hogy az Azure CLI-paranccsal jelentkezett be, az login
és a megfelelő szerepkört alkalmazza az Azure-felhasználói fiókjára:
- A művelet végrehajtásához "Küldés" jogcím(ek) szükségesek
- A művelet végrehajtásához "Fogadás" jogcím(ek) szükségesek
Az erőforrások eltávolítása
Lépjen a Service Bus-névtérre az Azure Portalon, és az Azure Portalon a Törlés gombra kattintva törölje a névteret és a benne lévő üzenetsort.
Következő lépések
Tekintse meg a következő dokumentációt és mintákat:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: