What is a MESSAGE QUEUE and Where is it used?

SdĂ­let
VloĆŸit
  • čas pƙidĂĄn 19. 05. 2024
  • Messaging Queues are widely used in asynchronous systems. Message processing in an asynchronous fashion allows the client to relieve itself from waiting for a task to complete and, hence, can do other jobs during that time. It also allows a server to process its jobs in the order it wants to.
    Messaging Queues provide useful features such as persistence, routing, and task management. We will be discussing the benefits of a message queue in future videos.
    A system having a message queue can move to higher-level requirements while abstracting implementation details of message delivery and event handling to the messaging queue.
    The 'queue' is just a name for this data structure. In practice, it could be storing messages using any policy. Some examples of message queues are Kafka and RabbitMQ. They are widely used for various purposes, such as command query request segregation (CQRS) and event sourcing.
    00:00 Pizza Shop Example
    01:40 Benefits of Asynchronous Processing
    02:44 Scaling Shops (Horizontally)
    03:10 Fault Tolerance
    04:09 Features of a message queue
    08:38 Encapsulation
    09:38 Thank you!
    Code: github.com/coding-parrot/Low-...
    Looking to ace your next interview? Try this System Design video course! đŸ”„
    interviewready.io
    With video lectures, architecture diagrams, capacity planning, API contracts, and evaluation tests. It's a complete package.
    Asynchronous Request-Response:
    stackoverflow.com/questions/1...
    www.enterpriseintegrationpatte...
    Message Queue:
    blog.codepath.com/2013/01/06/a...
    highscalability.com/blog/2012/...
    www.cloudamqp.com/blog/2014-1...
    www.rabbitmq.com/getstarted.html
    Load Balancing:
    ‱ What is CONSISTENT HAS...
    You can find me here:
    / gkcs0
    www.quora.com/profile/Gaurav-...
    github.com/gkcs/
    #message-queue #system-design #scalability #server

Komentáƙe • 599

  • @UlfAslak
    @UlfAslak Pƙed 2 lety +550

    Notes to self:
    * Servers are processing jobs in parallel.
    * A server can crash. The jobs running on the crashed server still needs to get processed.
    * A notifier constantly polls the status of each server and if a server crashes it takes ALL unfinished jobs (listed in some database) and distributes it to the rest of the servers. Because distribution uses a load balancer (with consistent hashing) duplicate processing will not occur as job_1 which might be processing on server_3 (alive) will land again on server_3, and so on.
    * This "notifier with load balancing" is a "Message Queue".

    • @ahalyapotti9905
      @ahalyapotti9905 Pƙed 2 lety +2

      Very good notes 👍

    • @mahmoudelrabee2456
      @mahmoudelrabee2456 Pƙed 2 lety +28

      I don't understand why there might be a duplicate ?
      the notifier will just query the tasks that handled by the cracked server and distribute them!

    • @sidharthsinghal1920
      @sidharthsinghal1920 Pƙed 2 lety +11

      @@mahmoudelrabee2456 That is true if we store the server id also. This is explained as the first approach at @4:52

    • @codekicks2171
      @codekicks2171 Pƙed 2 lety +1

      Consistent hashing and load balancer are 2 different things not same

    • @user-eq4oy6bk5p
      @user-eq4oy6bk5p Pƙed 2 lety +11

      The alternative approach is, instead of assigning individual task to server, you can let servers poll from the queue. In this case, your message queue is decoupled from application servers since message queue doesn't need to know anything about servers.

  • @Montisero
    @Montisero Pƙed 4 lety +834

    This guy reminds me of that friend that tries to explain and wrap up the whole semester for you 30 minutes right before the exam, because you didn't attend any lecture since the beginning.

  • @anulik1985
    @anulik1985 Pƙed 5 lety +85

    Great job explaining everything in a way anyone can understand. You are a natural teacher! Please continue teaching and sharing your knowledge!

    • @gkcs
      @gkcs  Pƙed 5 lety +6

      Thank you!

  • @corybeaver7562
    @corybeaver7562 Pƙed 3 lety +14

    Former teacher turned Linux engineer here. Very well done explanation of this concept. Easy to follow with great usage of visuals and ongoing metaphor!

  • @mokonzi2K6
    @mokonzi2K6 Pƙed 5 lety +5

    Message queue is getting lots of spot light in the industry, please keep making the video on this topic i like you way of teaching. thanks again.

  • @yusufahmed2233
    @yusufahmed2233 Pƙed rokem +4

    Explained the whole thing in literally the first 40 seconds. Truly amazing work!

  • @ish1285
    @ish1285 Pƙed 4 lety +28

    This was the best video so far. The way you explained the entire stuff without saying Message Queue the whole time awakened my grey cells. Thanks a lot!

  • @AhmadSayeed-plus
    @AhmadSayeed-plus Pƙed 3 lety +2

    I am a java dev. For learning purpose I am planning to make queue system. But from your video i got idea that JMS is something I should learn now. Thanks Gaurav.

  • @rskrao
    @rskrao Pƙed 4 lety +2

    I like the sheer excitement with which the topic is delivered!! Kudos!!

  • @PanKonKeso99
    @PanKonKeso99 Pƙed 6 měsĂ­ci

    Brother, I've been researching about message queues and I was so confused until I saw your video, thanks alot!

  • @irynasherepot9882
    @irynasherepot9882 Pƙed 3 lety +19

    Thank you! Your tutorials are great! My college did not have System Design and Analysis class, and your videos helped to learn a lot.

  • @hfontanez98
    @hfontanez98 Pƙed 3 lety +26

    EXCELLENT job in all areas: Simplifying the use cases for explaining easily to non-experts, very VERY close examples to real-world instead of using hypothetical cases, starting from simple (in memory) to more complex approach (with database), and avoiding super technical jargon; yet not shying away from technical details (i.e. load balancing, hashing, etc.)
    Well done Gaurav!! I enjoyed this video.

    • @gwho
      @gwho Pƙed 2 lety +1

      well said.

  • @rishabhagarwal9871
    @rishabhagarwal9871 Pƙed 5 lety +12

    Hi Gaurav, This is the one of the best real life example (with pizza shop) showing the need of asynchronous request/response system. Thanks for the great video. Really loved it.

    • @gkcs
      @gkcs  Pƙed 5 lety

      Thanks!

  • @stillthinking6357
    @stillthinking6357 Pƙed 4 měsĂ­ci +2

    know a days People like Bhaiya and didi on linkdln those who are giving lecture on system design other bla bla.. even don't know how to code, have more subscribers than this genuine talent. Hats of bro.😃

  • @ShubhamSingh-ku2ow
    @ShubhamSingh-ku2ow Pƙed 5 lety +26

    Bro, keep bringing up more videos like this. We are all such a big fan of yours. ALL the best! 👍
    PS: Amazon has SQS ;)

  • @gwho
    @gwho Pƙed 2 lety +4

    great clear presentation!
    one tip: use higher contrast ink and board.
    So that means more lighting to make the board more lighter/white
    and/or using dark ink like black or brown so we can see it more clearly.
    great content. subscribed. keep up the good work!

  • @mayankvora8116
    @mayankvora8116 Pƙed 3 lety +3

    Amazing explanation Gaurav. The best way to explain any concept is with practical examples, and you did the same.

  • @baikannikitha1897
    @baikannikitha1897 Pƙed 2 lety

    Again, thanks so much for taking the time to make this video. I've learned a lot from you. Keep it up!

  • @pramodkharade5373
    @pramodkharade5373 Pƙed rokem +6

    The concept has been explained very clearly. It would be great if you would come with practical implementation using NodeJS with any MQ

  • @rahilsinha_1407
    @rahilsinha_1407 Pƙed 3 lety

    Great Explanations of Sytem Design. Made fall in love with each concept.

  • @NohandleReqd
    @NohandleReqd Pƙed 3 lety +154

    Are we just going to ignore the fact that 9 / 11 were pointing at the same server and THAT was the server that crashed! :P Your lectures are fun man!

    • @MrZyman
      @MrZyman Pƙed 3 lety +7

      Illuminati confirmed! Well done.

  • @timothy6966
    @timothy6966 Pƙed rokem +1

    Your channel is amazing. Your explanations are some of the best I’ve ever heard/seen. Good job man.

  • @dilawarmulla6293
    @dilawarmulla6293 Pƙed 6 lety +70

    There are very less resource available for system design in youtube so please complete series . I like the way you teach. Thanks for making videos for us. God bless you

    • @gkcs
      @gkcs  Pƙed 6 lety +1

      Thanks Sameer :)

    • @Thrillseeker666
      @Thrillseeker666 Pƙed 4 lety +4

      "Very less", Very few. Indian English is hilarious though.

  • @rajeev812
    @rajeev812 Pƙed 5 lety +11

    Gaurav, this is really a nice and knowledgeable tutorial you have made, in very sort time you have explained this topic very clearly. Can you try to make it as a practical ( how to implement RabbitMQ)

  • @vaibhavpali
    @vaibhavpali Pƙed 10 měsĂ­ci

    kya to samjaya hai Gaurav, maza aa gaya.. Such precise explanation is so rare on online tutorials.

  • @barimohammedabdul5166
    @barimohammedabdul5166 Pƙed 3 lety

    Explained the concept really well , easy to understand

  • @manoharsingh6050
    @manoharsingh6050 Pƙed 2 lety +1

    When to use a Topic vs a Que would have been a nice addition.

  • @mahendrajadav2286
    @mahendrajadav2286 Pƙed měsĂ­cem +1

    "Now I know everything about how to run a restaurant; I will be starting my own restaurant very soon."
    Thanks to the legend Gaurav.

  • @sat1478
    @sat1478 Pƙed 4 lety

    You are the best teacher. Thank you very much.

  • @udayayyagari9160
    @udayayyagari9160 Pƙed 3 lety +3

    Gaurav, fantastic job with explaining the key tenants of high-level system design; how about bringing in some tooling and technology stack to support each of the architectures.

  • @dianecoffee4467
    @dianecoffee4467 Pƙed 3 lety

    Excellent and lite tutorial on messaging and load balancing

  • @pratikbhandarkar25
    @pratikbhandarkar25 Pƙed 4 lety +16

    Great video! This video explains the system design of a pizza shop very well. However, it spends a lot of time explaining load balancers and the notifier and very few minutes are dedicated to discussing message queues. I am more interested in the actual use of message queues in real-world systems like pizza shop here.

  • @cyrilrajc
    @cyrilrajc Pƙed 4 lety +3

    If you could cover on the concepts of real time operating systems- which includes tasks, task states, ,message queues and mailboxes etc..., It will be definetely helpful for me and for those who are interested in embedded computing and RTOS...

  • @Llink4n
    @Llink4n Pƙed 5 měsĂ­ci

    You explained it so well, thank you

  • @voleti19
    @voleti19 Pƙed 5 lety

    Appreciate your work!! thanks for sharing.

  • @mukeshbarman
    @mukeshbarman Pƙed 5 lety +21

    In a typical System design interview: Dabbe banao dabbe.. :D

  • @AmanSharma-hi3fd
    @AmanSharma-hi3fd Pƙed 3 lety

    Thanks a lot for the content. Even I discussed the same heartbeat like mechanism (Got the idea from the video :P) in an interview. It was really helpful!

  • @user-ld8ec2sj9i
    @user-ld8ec2sj9i Pƙed rokem

    Thanks for the valuable video! It really helps me to understand what the message queue is :)

  • @chiragr1336
    @chiragr1336 Pƙed 4 lety +2

    @Gaurav Sen Very informative video! I request you to make a video or videos about every component of any system design. Different problems employ different components. If we first study all the different components and their properties then at least we can stay thinking in right direction. Thanks for your video series!

  • @navjhs
    @navjhs Pƙed 2 lety

    Nice explanation. You are actually doing excellent work. Thank you.

  • @vigneshwarpadmanaban7816
    @vigneshwarpadmanaban7816 Pƙed 4 lety

    Amazing work Gaurav, Keep inspiring!

  • @MubashirAR
    @MubashirAR Pƙed 5 lety +42

    The only youtuber that keeps his video at 9:59

    • @gkcs
      @gkcs  Pƙed 5 lety +3

      Hahaha

    • @danielk8452
      @danielk8452 Pƙed 4 lety

      HAHAHAHAHAHAHA

    • @rtwkkumar20
      @rtwkkumar20 Pƙed 4 lety

      haha :?

    • @hairypaulsack
      @hairypaulsack Pƙed 4 lety +2

      back in the golden days of youtube everybody made videos to make videos, not to make money

  • @gauravmaithani4707
    @gauravmaithani4707 Pƙed 3 lety +28

    "Filling up the coke can" 2:20 haha. Love your videos bro.

  • @hvanmegen
    @hvanmegen Pƙed 5 lety +2

    As a European developer that has seen too much low-quality programming disasters from projects outsourced to low-wage Asian country developers, I must say that it's refreshing to see an Indian engineer that has actually studied for this stuff and knows what he's talking about, using the correct terminology... I'm subscribing; you're creating great content.

    • @srinathrachapudi
      @srinathrachapudi Pƙed 5 lety

      Low-quality programmers are everywhere not just in Asia.

  • @prativmukherjee5081
    @prativmukherjee5081 Pƙed 2 lety

    Short.. To the point.. Brilliant 👍

  • @nomib_k2
    @nomib_k2 Pƙed rokem

    so smart the way he is explaining. keep it up man

  • @Ayesha_siddiqah
    @Ayesha_siddiqah Pƙed 4 lety +2

    Brilliant:-) good job. Really appreciable. Kindly make complete series on system design and soon start video series on python programming:-):-)

  • @susantagouda8213
    @susantagouda8213 Pƙed rokem

    Very good job. I had so many confusion you just cleared

  • @kailashc1321
    @kailashc1321 Pƙed rokem

    Excellent explanation.
    Thanks

  • @ravishankarjoshi2952
    @ravishankarjoshi2952 Pƙed 5 lety +1

    We would like to have videos on object-oriented design patterns too like observer pattern etc.
    Please keep making videos. :D

    • @redpillsatori3020
      @redpillsatori3020 Pƙed 4 lety

      OOP is overrated and people are finally moving towards functional programming with NodeJS and React as some common examples

  • @ashish1004tiwari
    @ashish1004tiwari Pƙed 3 lety

    Man, You are awesome.. the way you explain is truly great.😂

  • @zararosenrot
    @zararosenrot Pƙed 3 lety

    Thanks for the great explanation man!!

  • @shalinifefar4750
    @shalinifefar4750 Pƙed 4 lety

    Hey Gaurav, Thank you so much for the great explanation. Your videos are awesome. Keep up the great work.👍

    • @gkcs
      @gkcs  Pƙed 4 lety +1

      Thanks!

  • @KB-ce5sh
    @KB-ce5sh Pƙed 4 lety +1

    Damn man you are an amazing teacher. Subscribed!

  • @elvinvalette9928
    @elvinvalette9928 Pƙed 3 lety +1

    Very clear explanation. Thank you

  • @NealMadlani
    @NealMadlani Pƙed rokem

    I've learnt a heck of a lot about how pizza shops work

  • @staronkar
    @staronkar Pƙed 4 lety +1

    Please create a video over HermesJMS. This video was really helpful in getting the basics of MQ

  • @cyrilrajc
    @cyrilrajc Pƙed 4 lety

    Thats an excellent explanation Gaurav.. Thank you.

  • @roooooot9545
    @roooooot9545 Pƙed 4 lety

    this is awesome explanation

  • @sankalparora9374
    @sankalparora9374 Pƙed rokem

    Amazing explanation! Thanks!

    • @gkcs
      @gkcs  Pƙed rokem

      You're welcome!

  • @misaelpereira9679
    @misaelpereira9679 Pƙed 2 lety

    Your charisma and you way of teaching gain me to be your subscriber :)

  • @michaelajayi2117
    @michaelajayi2117 Pƙed 3 lety

    Dude, you should get a Ph.D. for this... made it easy to understand. Thanks for sharing.

  • @gasannazer6556
    @gasannazer6556 Pƙed 4 lety

    Pretty well explained.

  • @user-mw5bm2xh9x
    @user-mw5bm2xh9x Pƙed 10 měsĂ­ci

    thanks for the informative presentation

    • @gkcs
      @gkcs  Pƙed 9 měsĂ­ci

      Glad it was helpful!

  • @anindachatterjee8904
    @anindachatterjee8904 Pƙed 3 lety

    Nicely and simply explained

  • @AnirbanRoyChowdhury1987
    @AnirbanRoyChowdhury1987 Pƙed 4 lety

    Really good video. Khub valo laglo dekhe.

  • @kalidindiprashanth7363
    @kalidindiprashanth7363 Pƙed 5 lety +2

    Super!!! Thank you Bro...

  • @emmanueldsouza
    @emmanueldsouza Pƙed 5 lety +1

    Great video. Would like a part 2

    • @gkcs
      @gkcs  Pƙed 5 lety +5

      Maybe one on Apache Kafka and it's features :)

  • @sagarmittal8392
    @sagarmittal8392 Pƙed 4 lety

    amazing series!

  • @curious1731
    @curious1731 Pƙed 3 lety

    Very giid analogies and articulation of topics..gr8 wrk.

  • @TheGugustar
    @TheGugustar Pƙed 2 lety

    Everyday you learn something new!
    I always thought PS3 stood for PlaStation 3, but here I learn that it stands for PizzaShop 3.

  • @naufilshaikh09
    @naufilshaikh09 Pƙed 2 lety

    Really nice explanation, impressive.

  • @juanmamani2110
    @juanmamani2110 Pƙed 5 lety

    Cool!
    Thanks for sharing.

  • @abheeg5041
    @abheeg5041 Pƙed 6 lety +2

    for each system design if a detailed explaination is there, then, it will be helpful for all becoz i think i can learn system designs from you
    thank you for your extraordinary work

    • @gkcs
      @gkcs  Pƙed 6 lety

      Thanks David :)

  • @jeevithamary7781
    @jeevithamary7781 Pƙed 2 lety

    Good Teaching!!! Keep it up with great work

  • @vishalberi1259
    @vishalberi1259 Pƙed 5 lety +1

    Hey Gaurav, appreciate your awesome work. my point is as you gave example if a pizza shop is down. what i think there will be no server on shop side and a shop has a client id only
    servers must be at remote location.
    orders object must have a client id.
    there must be process on server side that check heartbeat of client with an associated client id. if that client id down ( clients spawn a heartbeat thread to server and server checks heartbeat from client) then it will do the rest of things your explained done by your notifier component to assign the orders ( to client having nearest to client which is down)

    • @gkcs
      @gkcs  Pƙed 5 lety

      Thanks Vishal! Have a look at the full playlist. I do speak of it as you mentioned

  • @KTechy-
    @KTechy- Pƙed 8 měsĂ­ci

    great explantaion!

  • @abShar0705
    @abShar0705 Pƙed 3 lety

    banks, thats a fairly common use case that uses messaging services/queues extensively.
    batch processing transactions, after the card scheme authorises your tx and the request is send to the issuing bank, the entire xml message is stacked up on a messaging queue that is being constantly listened to by the issuing bank messaging service

  • @dataman4503
    @dataman4503 Pƙed 2 lety

    Great explanation

  • @muhammadsalmansanaullah102

    Nicely done Gaurav!! Once again... :)

  • @VikramThakur8
    @VikramThakur8 Pƙed 4 lety

    Gaurav! Its good conceptually. Thanks

  • @juanandrescastillosoria2936

    This tutoria is GREAT

  • @TheNumberEight
    @TheNumberEight Pƙed 6 lety

    I'm self taught and system design is not an area that I seem to be learning from documentation (and that makes sense, it isn't relevant to synatx or features of most technologies). Thank you for providing this material! You're decent to good at teaching, but mostly you're providing resources that are difficult to acquire outside a classroom or without a mentor.

  • @madinabonualisherova8935
    @madinabonualisherova8935 Pƙed 2 lety

    Well explained!

  • @suneelbabu6186
    @suneelbabu6186 Pƙed rokem

    Thank you so much for good video

  • @rohitdhankar360
    @rohitdhankar360 Pƙed 4 lety

    Excellent stuff - Cheers !!

  • @danishakh
    @danishakh Pƙed 4 lety +3

    That 'filling up the coke can' face! LOL :D - thumbs up for a great video explanation!

  • @vaibhavkulkarni7932
    @vaibhavkulkarni7932 Pƙed 5 lety +1

    Very well explained👍 ..If possible please make a video or two on Kafka Queues( involving Producer n Consumer ) ..This would serve as an example for for few of your previous videos on MQ,Load Balancing,Event Driven Systems..This would help them put together..

    • @gkcs
      @gkcs  Pƙed 5 lety

      I have this in my task list. It'll take time to get to it though :)

    • @vaibhavkulkarni7932
      @vaibhavkulkarni7932 Pƙed 5 lety

      Cool!!!!

  • @stillranking
    @stillranking Pƙed 2 lety

    It's an amazing talk.
    Here's a follow-up question.
    What if the message queue goes down to be a single failure? Should we have the message queue with hot backup such as Active-Passive mode?

    • @sarahdaniel6862
      @sarahdaniel6862 Pƙed 2 lety

      That is where the persistence of data comes into play. In order to keep reliability of the messages high, most message queues offer the ability to persist all messages to disk until they have been received and completed by the consumer(s). Even if the applications or the message queue itself happens to crash, the messages are safe and will be accessible to consumers as soon as the system is operational.

  • @ankitsharma-wm4zj
    @ankitsharma-wm4zj Pƙed 5 lety

    Hi Gaurav, Can you please explain this in more details like what are the classes hierarchy used to make such application ? Your teaching way is too good please explain this also. (Y)

  • @adityajoshi8794
    @adityajoshi8794 Pƙed 3 lety +3

    Hi Gaurav, loved your explanation. But I think, here you've mixed up related but different concepts.
    You are actually creating a storm topology with input from a kafka queue. The order queue is a message queue (say kafka). Storm topology is polling messages from the order queue & is assigning the tasks to one of the worker nodes (pizza shops) & is internally keeping track of task status using a task queue & using hearbeats (by using a zookeeper) to check whether nodes (pizza shops) are alive or not & if not assign the unfinished tasks on that worker node to a different worker node.

    • @gkcs
      @gkcs  Pƙed 3 lety

      Yes. What about the reallocation of tasks though?

  • @shantanusinha3609
    @shantanusinha3609 Pƙed 4 lety

    Great Analogy!

  • @amruthlal1394
    @amruthlal1394 Pƙed 5 lety +4

    Hey Gaurav, you explained the concepts behind services provided by a message/task queue neatly. Your system design series is extremely useful for beginners like me. Keep up the good work.
    I have a small suggestion regarding the pizza example. In the scenario of a pizza shop node failure, the load balancer may consider other factors such as geographic proximity of a particular shop to the clients location. Hence the dynamic reallocation of requests by load balancer also includes some business logic. This makes the example a little bit complex for explaining the purpose of message queue. Please do consider finding out more simple examples which serves the purpose without additional complexity in future videos

    • @gkcs
      @gkcs  Pƙed 5 lety +2

      That's a good point.
      I took up the example since I wanted to point the simple way of going about designing a system. 😁

  • @iitgupta2010
    @iitgupta2010 Pƙed 4 lety +6

    this is the first time I found the wrong explanation.
    1. Once you have notified and it found that server 3 is dead then it can give that specific task to "assigner" node which basically divides the task and share between other nearest server to that location (it is important).
    2. Each shop has to maintain his own task queue and "assigner node" would add those task in that queue based on priority ( but this will be least among its own task, as it requires to completes own task first then other. )
    3. there is no use of centralized queue, until n unless you provide a feature to the pizza shop and based on user location pizza shop automatically (user did not select the shop which is always the case in dominoes at least) assign this task to the nearest shop.
    4. Load balancer (if you were talking about the actual load balancer between servers) is no use for the assignment, as its responsibility to just equally divides the task across multiple servers within the same region for which this load balancer responsible for.

  • @parvezmulla3324
    @parvezmulla3324 Pƙed 6 lety +4

    Nice explanation! Can you suggest resources to follow for system design?

  • @williamwhitehead374
    @williamwhitehead374 Pƙed 2 lety

    Great teacher

  • @maaRyneeT
    @maaRyneeT Pƙed 3 lety

    This video ia really good, thank you

  • @ShaanGola
    @ShaanGola Pƙed 4 lety

    Hi Gaurav,
    I'm glad you have discuss about RabbitMq. I just came over to explore more about this topic ...I just want to know more about how to monitor microservices in rabbitmq..I'm able to know more about the application architecture and implementation after watching your videos. can we have ellaborate discussion over this i'm stuck somewhere in rabbitmq.

  • @rajchoudhary4349
    @rajchoudhary4349 Pƙed 2 lety +1

    Nice narration..!! My pizza just got delivered under 30min