There are times when as a cloud administrator, you would want to scale Azure Service Bus Topic processing, but nodes may not be powerful enough to handle thousands of requests per second. Creating multiple message factories, sending and receiving asynchronously, doing batch send/receive and good ways to scale Azure Service Bus, but they are helpful only for publisher and subscriber mode. They won’t be much effect on a low-power Topic Node.
So, how would you scale you Azure Service Bus to handle more than 10,000 transactions/second? Here are few tips to help you achieve that.
Partition Traffic across Multiple Queues & Topics
What do highway architects do when they need to increase/speed up the flow of traffic? They add more lanes. More lanes mean more traffic can flow through in less time. If your Azure Service Bus Topic traffic needs are increasing, partition your traffic across multiple queues and topics. You will get better traffic flow rates with more queues and topics to support large quantity of requests in a very short time. This will also let you send messages over multiple queues but they look like a single queue to you API – increasing the throughput of a Queue.
Use Azure Auto Scaling
With Azure auto scaling capabilities you can automatically monitor the messages in a queue (or CPU load) and add/remove instances to maintain that target.
You can use Azure Service Bus Automation and Monitoring by Netreo to help you scale and monitor queues. Netreo lets you Scale compute resources in real-time based on demand indicated by Service Bus queues or topics. Power up extra servers automatically as queue or topic depths increase and drop them when they decrease.
Netreo keeps up with Service Bus queues, topics and event hubs every minute of every hour. You will also receive instant notification and alerts into Azure Service Bus queue problems. With Netreo, you can also monitor queue and topic depths, track dead-letter messages, get notified when messages are not processing and keep up with Event Hubs key performance indicators.