Skicka meddelanden till och ta emot meddelanden från Azure Service Bus köer (JavaScript)

I den här självstudien får du lära dig hur du använder @azure-/service-bus-paketet i ett JavaScript-program för att skicka meddelanden till och ta emot meddelanden från en Service Bus kö.

Anteckning

Den här snabbstarten innehåller stegvisa instruktioner för ett enkelt scenario där meddelanden skickas till en Service Bus och tar emot dem. Du hittar färdiga JavaScript- och TypeScript-exempel för Azure Service Bus på lagringsplatsen Azure SDK för JavaScript på GitHub.

Förutsättningar

  • En Azure-prenumeration. Du behöver ett Azure-konto för att genomföra kursen. Du kan aktivera dina MSDN-prenumerantförmåner eller registrera dig för ett kostnadsfritt konto.
  • Om du inte har någon kö att arbeta med följer du stegen i artikeln Använda Azure Portal för att skapa en Service Bus för att skapa en kö. Anteckna anslutningssträngen för Service Bus namnområdet och namnet på den kö som du skapade.

Anteckning

Installera paketet med NPM (Node Package Manager)

Om du vill installera npm-paketet för Service Bus öppnar du en kommandotolk som har i sökvägen, ändrar katalogen till den mapp där du vill ha exemplen och kör sedan npm det här kommandot.

npm install @azure/service-bus

Skicka meddelanden till en kö

Följande exempelkod visar hur du skickar ett meddelande till en kö.

  1. Öppna din favoritredigerare, till exempel Visual Studio Kod.

  2. Skapa en fil med send.js namnet och klistra in koden nedan i den. Den här koden skickar namnen på forskare som meddelanden till din kö.

    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. Ersätt <CONNECTION STRING TO SERVICE BUS NAMESPACE> med anslutningssträngen till Service Bus namnområdet.

  4. Ersätt <QUEUE NAME> med namnet på kön.

  5. Kör sedan kommandot i en kommandotolk för att köra den här filen.

    node send.js 
    
  6. Du bör se följande utdata.

    Sent a batch of messages to the queue: myqueue
    

Ta emot meddelanden från en kö

  1. Öppna din favoritredigerare, till exempel Visual Studio Code

  2. Skapa en fil med receive.js namnet och klistra in följande kod i den.

    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. Ersätt <CONNECTION STRING TO SERVICE BUS NAMESPACE> med anslutningssträngen till Service Bus namnområdet.

  4. Ersätt <QUEUE NAME> med namnet på kön.

  5. Kör sedan kommandot i en kommandotolk för att köra den här filen.

    node receive.js
    
  6. Du bör se följande utdata.

    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
    

På sidan Översikt för Service Bus i Azure Portal kan du se antal inkommande och utgående meddelanden. Du kan behöva vänta i någon minut och sedan uppdatera sidan för att se de senaste värdena.

Incoming and outgoing message count

Välj kön på den här översiktssidan för att gå Service Bus sidan Kö. Du ser även antalet inkommandeoch utgående meddelanden på den här sidan. Du ser också annan information, till exempel den aktuella storleken på kön, maximal storlek,antal aktiva meddelandenoch så vidare.

Queue details

Nästa steg

Se följande dokumentation och exempel: