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.