Berichten verzenden naar een Azure Service Bus en berichten ontvangen van abonnementen op het onderwerp (JavaScript)
In deze zelfstudie leert u hoe u het @azure/service-bus-pakket in een JavaScript-programma kunt gebruiken om berichten te versturen naar een Service Bus-onderwerp en berichten te ontvangen van een Service Bus-abonnement naar dat onderwerp.
Notitie
Deze quickstart bevat stapsgewijs instructies voor een eenvoudig scenario voor het verzenden van een batch berichten naar een Service Bus-onderwerp en het ontvangen van die berichten van een abonnement van het onderwerp. U vindt vooraf gebouwde JavaScript- en TypeScript-voorbeelden voor Azure Service Bus in de azure SDKvoor JavaScript-opslagplaats op GitHub .
Vereisten
- Een Azure-abonnement. U hebt een Azure-account nodig om deze zelfstudie te voltooien. U kunt uw voordelen als MSDN-abonnee activeren of u aanmelden voor een gratis proefversie.
- Volg de stappen in de Quickstart: Gebruik Azure Portal om een Service Bus-onderwerp en abonnementen voor het onderwerp te maken. Noteer de verbindingsreeks, onderwerpnaam en abonnementsnaam. U gebruikt slechts één abonnement voor deze quickstart.
Notitie
- In deze zelfstudie wordt gebruikgemaakt van voorbeelden die u kunt kopiëren en uitvoeren met Nodejs. Zie voor instructies over het maken van een Node.js-toepassing Een Node.js-toepassing maken en implementeren op een Azure-website of Node.js-cloudservice met Windows PowerShell.
Node Package Manager (NPM) gebruiken om het pakket te installeren
Als u het npm-pakket voor Service Bus wilt installeren, opent u een opdrachtprompt met npm in het bijbehorende pad. Wijzig de directory in de map waar u de voorbeelden wilt maken en voer vervolgens deze opdracht uit.
npm install @azure/service-bus
Berichten verzenden naar een onderwerp
De volgende voorbeeldcode laat zien hoe u een batch berichten naar een Service Bus-onderwerp verzendt. Zie opmerkingen bij de code voor meer informatie.
Open uw favoriete editor, bijvoorbeeld Visual Studio Code
Maak een bestand met de naam
sendtotopic.jsen plak de onderstaande code hierin. Met deze code worden een bericht naar uw onderwerp verzonden.const { ServiceBusClient } = require("@azure/service-bus"); const connectionString = "<SERVICE BUS NAMESPACE CONNECTION STRING>" const topicName = "<TOPIC 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 connection string to the Service Bus namespace const sbClient = new ServiceBusClient(connectionString); // createSender() can also be used to create a sender for a queue. const sender = sbClient.createSender(topicName); 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 arry // 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 topic await sender.sendMessages(batch); console.log(`Sent a batch of messages to the topic: ${topicName}`); // 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); });Vervang
<SERVICE BUS NAMESPACE CONNECTION STRING>door de verbindingstekenreeks voor uw Service Bus-naamruimte.Vervang
<TOPIC NAME>door de naam van het onderwerp.Voer vervolgens de opdracht in een opdrachtprompt uit om dit bestand uit te voeren.
node sendtotopic.jsDe volgende uitvoer wordt weergegeven.
Sent a batch of messages to the topic: mytopic
Berichten van een abonnement ontvangen
Open uw favoriete editor, bijvoorbeeld Visual Studio Code
Maak een bestand met de naam receivefromsubscription.js, en plak hierin de volgende code. Zie opmerkingen bij de code voor meer informatie.
const { delay, ServiceBusClient, ServiceBusMessage } = require("@azure/service-bus"); const connectionString = "<SERVICE BUS NAMESPACE CONNECTION STRING>" const topicName = "<TOPIC NAME>"; const subscriptionName = "<SUBSCRIPTION NAME>"; async function main() { // create a Service Bus client using the connection string to the Service Bus namespace const sbClient = new ServiceBusClient(connectionString); // createReceiver() can also be used to create a receiver for a queue. const receiver = sbClient.createReceiver(topicName, subscriptionName); // 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(5000); await receiver.close(); await sbClient.close(); } // call the main function main().catch((err) => { console.log("Error occurred: ", err); process.exit(1); });Vervang
<SERVICE BUS NAMESPACE CONNECTION STRING>door de verbindingsreeks naar uw naamruimte.Vervang
<TOPIC NAME>door de naam van het onderwerp.Vervang
<SUBSCRIPTION NAME>door de naam van het abonnement op het onderwerp.Voer vervolgens de opdracht in een opdrachtprompt uit om dit bestand uit te voeren.
node receivefromsubscription.jsDe volgende uitvoer wordt weergegeven.
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
Navigeer in het Azure Portal naar uw Service Bus-naamruimte en selecteer het onderwerp in het onderste deelvenster om de pagina Service Bus-onderwerp te bekijken voor uw onderwerp. Op deze pagina ziet u drie inkomende en drie uitgaande berichten in de grafiek Berichten.
Als u de volgende keer op de pagina Service Bus-onderwerp een app verzenden uitvoert, ziet u zes inkomende berichten (3 nieuw), maar drie uitgaande berichten.
Als u op deze pagina een abonnement selecteert, krijgt u toegang tot de pagina Service Bus-abonnement. Op deze pagina ziet u het aantal actieve berichten, het aantal onbestelbare berichten, en meer. In dit voorbeeld zijn er drie actieve berichten die nog niet zijn ontvangen door een ontvanger.
Volgende stappen
Raadpleeg de volgende documentatie en voorbeelden: