Try for free Book a demo

The hidden gems in Azure Service Bus features you probably didn’t know existed

Microsoft Azure

5 Mins Read | Last modified on March 4th, 2024

Azure-Service-Bus

Azure Service Bus is a raw messaging platform, there is no user interface to explore and visualize the features in action (apart from the basic interface provided by Azure Portal). Often times a simple property setting will have a huge functionality enabled, which otherwise would have required substantial engineering investment from end users. There are a lot of those hidden gems in Azure Service Bus features, let’s take a look at some of the important ones and try to understand the format

  • “What” – What is this feature about?
  • “When” – When will you need this feature?
  • “How” – How do you enable this feature in Azure Service Bus?
  • “Example use case” – We will cover a practical example use case for the feature.

Azure Service Bus Features

Duplicate Detection

What: Ignore messages that are sent more than once in a specified time window

When: Upstream applications are unpredictable and noisy. They may send duplicate messages

How: At the Queue/Topic level you set the “Duplicate Detection History Time Window” property (example: 10 minutes) and when you are sending the message you set the MessageId property to desired value that can identify the message, example OrderNumber

Example use case: A simple example will be barcode scanning in supermarkets, with all the new self-service check-in kiosks it’s very easy for end user to scan the same items more than once.

Azure Service Bus feature-duplicate detection

Scheduled Messages

What: place a message in a queue or topic that doesn’t “appear” until a specified future time

When: Sender wants to send something now, but doesn’t want an action to take place on it until later. Take actions to complete or rollback work at a specified point

How: When sending the messages you simply set the ScheduledEnqueueTimeUtc (on BrokeredMessage) to desired UTC time. The messages will not be available until the time is elapsed

Example use case: You process a monthly employee payroll, throughout the month various underlying system send the messages to the queue that should only be processed on the last working day of the month.

Defer

What: Mark a message to be skipped so it doesn’t keep getting read off a queue or topic

When: Whenever you can’t process something immediately, but must process it later

How: Call BrokeredMessage.Defer method

Example use case: This is kind of an advanced feature, we take advantage of this feature within Turbo360 for dead letter message resubmission. We wanted to build a reliable way for message resubmission in Turbo360. The standard way of retrieving messages using “Receive and Delete” operation then resubmit the message might result in message loss if we cannot resubmit the message successfully. Hence, we “Defer” the messages first, store the sequence number, resubmit them and after successful resubmission, we Delete the messages using the SequenceNumber.

Note: You need to be super careful while using this functionality, if you lose the SequenceNumber of the message then there is no way to get that message.   

Check out the blog on Azure Service Bus delete message to understand how to resubmit and delete messages in Azure Service Bus Messaging.

Auto Forward

What: Forward all messages to another entity

When: If current senders have an address you don’t want to use anymore – or if you want more fine-grained security

How: Set the ForwardTo property on the Queue or the Subscription (for a topic)

Example use case: There are a lot of underlying external systems send messages to a particular queue, where you do not have the control or option to ask them to change the queue name. In this case, you can leave the existing queue as it is and simply forward the messages to new queue or topic.

Azure Service Bus feature-auto forward

Auto Forward (Dead Lettered Messages)

Dead lettering with Auto forward

What: Send dead letter messages to another entity (queue/topic)

When: You want more control over where non-deliverable messages go

How: Use the ForwardDeadLetteredMessagesTo property on Queue or Topic

Example use case: You can forward the dead letter messages to a topic and have a rich exception handling. There is another hidden property called DeadLetterSource which will provide you the source queue name, especially useful if you are planning to have a central exception handling “Azure Service Bus Topic” and create some subscription rules based on the source queue name.

Azure Service Bus feature-auto forward deadletter

Auto Delete on Idle

What: Delete entities that do not have a Send operation called for a certain amount of time

When: You need to create entities for specific flows or scenarios that are transient in nature and don’t want to clean them up

How: At the Queue/Topic level specify a timespan for AutoDeleteOnIdle property

Example use case: You are working with large volume of temporary external contractors who send messages, due to the nature of the business after 1 week they will wear out and the queues/topics are no longer required. 

Azure Service Bus feature-auto delete on idle

Note:  All the above screenshots are taken from Turbo360, we wanted to create a world-class operations and monitoring solution for Azure Service Bus and make the platform super powerful for the end users. If you have invested in Azure Service Bus, sign up for Turbo360 free account and get started.

Strengthen your Azure Service Bus monitoring, and get powerful toolsets and actionable insights to troubleshoot messaging issues with the help of Turbo360.

This article was originally published on Jun 23, 2017. It was most recently updated on Mar 4, 2024.

Related Articles