DEV Community

loading...
Cover image for Azure Service Bus - Introduction for beginners

Azure Service Bus - Introduction for beginners

Mohamad Lawand
Code is Life. Crossfitter. Technical Architect. Just another human walking the earth! https://youtube.com/c/mohamadlawand
・4 min read

In this article we will be exploring what is Azure Service bus.

You can watch the entire step by step video on Youtube

So what are we going to cover today.

  • What is Azure Service Bus?
  • Some Terminology
  • Application structure Old vs New
  • Azure Service Bus types
  • Protocols
  • Features

In essence Azure Service Bus is a way to send a message from point a to point b. it means that i am going to put the info that i want to send somewhere and the specific service thats needs it will pick it up.

Azure Service bus leverage the idea of async process in the message queue and its very durable.

Once we publish a message to the queue its very hard to loose that data

Sample ASB

Traditional application

In a traditional web application, the entire processing will be in the monolith so processing a request can take up to a minute or two and the user will have to wait in the unknown until the request has been processed

Alt Text

In this case all of the requests are being processed by the API server

Pros:

  • Easy to host
  • Single point of processing

Cons:

  • Single point of failure
  • Very hard to scale
  • bad user experience
  • difficult to maintain without down time

Service based application

The application divide the work that needs to be done to different services. Services can run asynchronously and the user will get a faster response while the application does it processing and once the process has been complete the user will get a confirmation.

New structure

We can see that the API delegate the processing of the order to different queue and every single one of them is running asynchronously to process the order

Pros

  • Scalable
  • Easy to maintain without down time
  • better user experience
  • less error prone

Cons:

  • Complicated to host
  • multiple services to manage

Azure Service bus:

There is 2 types in Azure Service bus: Queue and Topics

Queue:

  • Follow the FIFO model (First in first out)
  • The consumer is 1 type of the application
  • Point to point model
  • We cannot have multiple types of the application as when its consumed by 1 service its lost of ever no other service will be able to pick it up

Alt Text

Topics:

  • Topics will have subscriptions
  • Once there is a message in the queue every application that is subscribed to the queue will receive a copy of that message
  • Publish and subscribe model: deals with contract negotiations and changes because there is more consumers
  • Services can have filter to allow only certain types of messages to be sent to them

Queue Topics

Azure Service Bus Protocols:

  • AMQP is the default one (Advance Messaging Queue Protocol) it’s the one the is used out of the box in the SDK
  • HTTP incase there is some firewall rules and access rules this protocol can be used
  • JMS (Java Messaging Service) for premium service bus

Features

Dead letterings:

if we publish something into the queue and the processor fails to process the message, it will go back to a separate queue called dead letter queue so we can go back and check what is the issue and incase we fix the issue with the processor we can reinitiate the letters in the queue so we don't loose any information

Dead lettering

Message Sessions:

We want to group a list of messages together and process them all in a single instance instead of separate processing

Alt Text

Duplicate Message detection:

In case a message got released multiple times to the queue, the queue is capable to knowing that there is a duplicated and ignores it

Duplicate Message

Scheduling:

When a message enters the Queue we can give it a date and time on when it needs to be processed by the processors. Only at that time its processed else it will stay in the queue and wait.

Scheduling

Subscription filters:

When we are using the Pub/Sub approach if one of the processors dont want to listen to every incoming message, we can add a filter to the process to accept only certain types of messages

Filtration

Time To Live (TTL)

Add a deadline to the message so in case the deadline has passed and the message has not been processed it is ignored and not processed

TTL

Links to Azure official documentation :
https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview

Thank you for reading

Discussion (0)