Berichten verzenden naar en berichten ontvangen van Azure Service Bus-wachtrijen (JavaScript)

In deze zelfstudie leert u hoe u het pakket @azure/service-bus in een JavaScript-programma kunt gebruiken om berichten van en naar een Service Bus-wachtrij te ontvangen en verzenden.

Notitie

Deze quickstart bevat stapsgewijs instructies voor een eenvoudig scenario waarin berichten naar een Service Bus wachtrij worden verzonden en ontvangen. U vindt vooraf gebouwde JavaScript- en TypeScript-voorbeelden voor Azure Service Bus in de Azure SDKvoor JavaScript-opslagplaats op GitHub .

Vereisten

Notitie

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 wachtrij

De volgende voorbeeldcode laat zien hoe u een bericht naar een wachtrij verzendt.

  1. Open uw favoriete editor, bijvoorbeeld Visual Studio Code.

  2. Maak een bestand met de naam send.js en plak de onderstaande code hierin. Met deze code worden de namen van wetenschappers als berichten naar uw wachtrij verzonden.

    const { ServiceBusClient } = require("@azure/service-bus");
    
    // connection string to your Service Bus namespace
    const connectionString = "<CONNECTION STRING TO SERVICE BUS NAMESPACE>"
    
    // 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 connection string to the Service Bus namespace
        const sbClient = new ServiceBusClient(connectionString);
    
        // 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);
     });
    
  3. Vervang <CONNECTION STRING TO SERVICE BUS NAMESPACE> door de verbindingstekenreeks voor uw Service Bus-naamruimte.

  4. Vervang <QUEUE NAME> door de naam van het wachtrij.

  5. Voer vervolgens de opdracht in een opdrachtprompt uit om dit bestand uit te voeren.

    node send.js 
    
  6. De volgende uitvoer wordt weergegeven.

    Sent a batch of messages to the queue: myqueue
    

Berichten van een wachtrij ontvangen

  1. Open uw favoriete editor, bijvoorbeeld Visual Studio Code

  2. Maak een bestand met de naam receive.js en plak hierin de volgende code.

    const { delay, ServiceBusClient, ServiceBusMessage } = require("@azure/service-bus");
    
    // connection string to your Service Bus namespace
    const connectionString = "<CONNECTION STRING TO SERVICE BUS NAMESPACE>"
    
    // name of the queue
    const queueName = "<QUEUE 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 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);
     });
    
  3. Vervang <CONNECTION STRING TO SERVICE BUS NAMESPACE> door de verbindingstekenreeks voor uw Service Bus-naamruimte.

  4. Vervang <QUEUE NAME> door de naam van het wachtrij.

  5. Voer vervolgens de opdracht in een opdrachtprompt uit om dit bestand uit te voeren.

    node receive.js
    
  6. De 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
    

Op de pagina Overzicht voor de Service Bus-naamruimte in Azure Portal ziet u het aantal inkomende en uitgaande berichten. Mogelijk moet u ongeveer een minuut wachten en de pagina vervolgens vernieuwen om de meest recente waarden te zien.

Aantal inkomende en uitgaande berichten

Selecteer de wachtrij op de pagina Overzicht om naar de pagina Service Bus-wachtrij te gaan. U ziet ook de inkomende en uitgaande berichten op deze pagina. U ziet ook andere informatie, zoals de huidige grootte van de wachtrij, maximum grootte, aantal actieve berichten, enzovoort.

Details van wachtrij

Volgende stappen

Raadpleeg de volgende documentatie en voorbeelden: