Azure.Messaging.ServiceBus is the latest SDK library that allows you to interface with Azure Service Bus.
In this post I wrote about receiving a message in Azure Service Bus using the Microsoft.Azure.ServiceBus library. Here, I’ll cover the method of receiving a message using Azure.Messaging.ServiceBus.
The first step is to create a ServiceBusClient instance:
\_serviceBusClient = new ServiceBusClient(connectionString);
Once you’ve created this, the subsequent classes are created from there. This library draws a distinction between a message receiver and a message processor - the latter being event driven.
Receiving a Message
To receive a message:
var messageReceiver = \_serviceBusClient.CreateReceiver(QUEUE\_NAME);
var message = await messageReceiver.ReceiveMessageAsync();
//string messageBody = Encoding.UTF8.GetString(message.Body);
string messageBody = message.Body.ToString();
It’s worth noting here that it is no longer necessary to decode the message body explicitly.
Processing a Message
This is the new version of registering a handler for the event, and it has a few additional features. Let’s see the code:
var processor = \_serviceBusClient.CreateProcessor(QUEUE\_NAME);
processor.ProcessMessageAsync += handleMessage;
processor.ProcessErrorAsync += ExceptionHandler;
await processor.StartProcessingAsync();
await Task.Delay(2000);
await processor.StopProcessingAsync();
We won’t worry too much about the events themselves for now, but the important events are StartProcessingAsync and StopProcessingAsync. Note that here we have a 2 second delay - this means that we will receive messages for two seconds, and then stop; obviously the start and stop don’t need to be in the same method.