I'd say most of his videos provide insights and good quality of technical detail , it would be much better if he can keep long story short , majority of people (maybe engineers also) nowadays just lose patience when they feel that they cannot finish watching / reading such video in a short while (maybe few minutes, less than half an hour)
What I like from most of your videos is that sometimes you also talk about lower OSI layers, peeling up the abstraction. It is cool, different, and solid. Thanks for developing this channel.
Before i came to this video i knew NOTHING of RabbitMQ, and after just the introduction i got a pretty good understatement of the basic functionalities, thank you for translating this to human language!
My team lead told me to learn Rabbitmq for a future project. As a Junior dev I got freaked out, but now after this video it doesn't seems too much complicated, ofcouse i haven't dived deeper yet, but still the basic was pretty fine. Thank you! Btw love your talking style, very refreshing and not boring at all!
I`ve found this channel just couple days ago. VEry gib respect to author. Very clear, a bit humorous. And of top of that, just go throw list of videos. He covers a great topics. Thank you so much
I was listening the whole video in background while I was doing other work stuff, when I'm done at work I have to Watch the video, it sounded very interesting .
It's true, I can't approach rmq along with celery, because I just can't make connections in my head because of all the terms, and if you also mention details for each term your head is going to explode ) thanks for the video)
I am glad you used Node for the demo session. While all languages have their pluses and minuses, at least with Node, you picked a universal language in JavaScript that developers in all industries can relate to.
Hey, you have real clear style of teaching, appretiate that. But I am afread I cannot imagine a crash course about RabbitMQ without explaining the exchanges, binding keys and queues.
WTF guys....who is talking abt his bad accent n all Just remember one thing...he knows English language hence dats why we are able to get KT...otherwise this gem 💎 would not be accessible to wide audience
Awesome video! Thanks for another great one Hussein! I recently discovered a really interesting stack of technologies called the TICK stack. Its four technologies so might be a little heavy for one or two videos, but I would love to hear your opinion on it and see you spin it up on docker and do some cool stuff with it! Cheers!
This is great for start. It'd be great if you could extend this topic for a real life use case. I have read rabbitmq can be used for push notifications. How about a tutorial for that?
Loved that idea thanks for the suggestion. RabbitMQ as We discussed supports push by default so it make sense to be used for push notifications.. but honestly I think redis is better and easier to implement for such use case just because of how complicated RabbitMQ is.. still good use case and would to consider making a comparison video.. thanks! Cheers
Here are few problems which one can find interesting: 1. Whats if multiple consumers are connected to a single Queue, and only one of them acknowledges the message and due to some reason the other consumer failed and want to process the message again, how to do this? 2. I can clearly see, very soon there will be a huge need to load balance this Pub Sub Queue model, being a stateful model is very tricky, how fo we tackle that? Thank hussain for a wonderful tutorial. Don't need your answers on this, just wanted to share my thoughts.
Good insights 1) the message that is not acknowledged because of a failure won’t be removed from the queue so the next client that starts will pick that message again. All sorts of problems with that, did the message actually got processed but couldn’t acknowledge? Did the acknowledge message get lost? Look up the two general problem 2) not sure about RabbitMQ (i think yes) but kafka does have distributed queue Glad you liked it!
Best practice says to not open a channel each time you are publishing, and keeping connection long-lived. There is a benefit of closing connection and channel on publisher?
Hi Hussein, does rabbitMQ (and MQ in general) use the pub/sub pattern? can the consumer subscribes to the publisher and wait for a message without the need to actively consume them on its own?
That is correct RabbitMQ as I explained in the video uses Pub/sub pattern. Where you have subscribers (consumers) connecting to a queue and a publisher publishing to a queue. As for your second part of your question RabbitMQ uses PUSH model where a consumer connects to a queue and any message published to the queue will be automatically PUSHED to the consumer/subscriber without the subscriber has to request actively it by itself. Kafka also uses pubsub pattern but they use different message delivery approach (not push) they use long polling.. Im making a pubsub video that will be posted in the coming days.. stay tuned and keep these interesting questions coming Have a great weekend 😊
An Awesome Video !!. Can you also do an admin video for RabbitMQ ? Like how to manage the queues, how to republish a queue. How to republish a dead letter queue etc or if u already have it, kindly point me to it. Thanks a lot and your entire video is awesome and not boring at all. Keep up the good work of teaching others...👍
I have a doubt regarding RabbitMQ installation. Either we can directly install RabbitMQ software manually or we can install it via docker. Which method we should use?
Can you do a video on Nats streaming, it can handle more messages than rabbitmq but does not hold messages in database. I am currently building a microservice app and I am using Nats but I am tempted to use rabbitmq and the only thing that make them difference is the ability to persist messages (if I am not wrong in regards to RabbitMQ) and also in Nats you can have multiple consumers listening to same queue (not sure with rabbit mq) and only one of them can process that message. This is very good when you have multiple replicas of server or multiple instance of servers and one of them can process the message. The down side to this is that, if the system is down (Nats streaming) then all messages are gone) other than that it can handle so you have to find a way to hold the un acked messages and push them from your db to nats to other services where it's appropriate. what's your input on this ? a video comparison on the two and their limitation would be a great idea brother Hussein.
Glad it is! let me know if there is anything I could do better or simplify or if there is a point I probably missed (which I probably have haha) Cheers! and stay awesome!
Hi Hussein. thanks for the very good video. However I don't understand where task Queues like Celery fit into this. Can you explain why we need Celery + rabbitmq?
I disagree with your conclusion. First of all, the complexity you've described is actually inherent to decoupled, event-driven architectures. Pub/Subs and Push data transfers is a way of decoupling pieces of systems and reducing dependencies. Very common in anything where data sources (sensors/microservices/clients) can dynamically enter or leave and you'd like to ensure your system is somewhat robust.
Very nice tutorial! This is really helpful to me. Would it be possible also to include header? For example the consumer expects the message to have a valid header authorization sent by the publisher (let's say a JWT token, Authorization: Bearer eyj-some-token)
how does rabbitmq acknowledge which consumer has received the message, does it maintain state for that? if 3 out of 10 consumers have not received it, does it remember that they have not received and maintains a state for that?
is it okay to use rabbitmq in a monolithic application (for handling many requests at the same time) ?? and if you can make a video on how to scale a monolithic application for small teams
I am still looking to be honest, I tried ZeroMQ ruclips.net/video/UrwtQfSbrOs/видео.html but wasn’t exactly what i was looking for People suggested for me to look NSQ but haven’t done that yet..
TOC - RabbitMQ Components 2:00
Spin up docker RabbitMQ container 8:30
Write a Publisher client NodeJs 11:00
Write a consumer client NodeJs 20:30
My thoughts on RabbitMQ 33:50
People comment not liking Hussein's voiceover or talking style, but in my personal opinion, it keeps me awake so it's a good thing
I speed up the play by x1.75, his tone gone.. so I can concentrate on what he is saying
Cant agree more
Yeah, just stopped and tried to find another video just because of this "talking style"( It's a shame, the content is good
I prefer this style compared to the others.
I'd say most of his videos provide insights and good quality of technical detail , it would be much better if he can keep long story short , majority of people (maybe engineers also) nowadays just lose patience when they feel that they cannot finish watching / reading such video in a short while (maybe few minutes, less than half an hour)
What I like from most of your videos is that sometimes you also talk about lower OSI layers, peeling up the abstraction. It is cool, different, and solid. Thanks for developing this channel.
Rafi Ramadhana thanks Rafi! Appreciate the feedback 😊
I'm only halfway through and this is already the most valuable RabbitMq tutorial I've seen thus far.
You're hilarious dude, and thanks for making my life a little easier!
Before i came to this video i knew NOTHING of RabbitMQ, and after just the introduction i got a pretty good understatement of the basic functionalities, thank you for translating this to human language!
Man, I just love the way how you explain things. Your RUclips channel is a gem!
I like that you explain it slow and with passion, not like the most of youtube videos "RabbitMQ in 5 seconds"...
My team lead told me to learn Rabbitmq for a future project. As a Junior dev I got freaked out, but now after this video it doesn't seems too much complicated, ofcouse i haven't dived deeper yet, but still the basic was pretty fine.
Thank you!
Btw love your talking style, very refreshing and not boring at all!
It's late to write "Kafka", but it was great, and thank you for this great video.
Please keep updating :)
I`ve found this channel just couple days ago. VEry gib respect to author. Very clear, a bit humorous. And of top of that, just go throw list of videos. He covers a great topics. Thank you so much
Thank you so much, Hussein.
I like your speaking style. It made me active on this tutorial until the end.
Thanks Victor
Every minute of explanation is just making me speechless. Lots of love for you!!!
Wow, thank you!
@@hnasr you are more than welcome
I was listening the whole video in background while I was doing other work stuff, when I'm done at work I have to Watch the video, it sounded very interesting .
I learned rabbitmq with this video. I loved the passion this man inspires on each video
You explaining things in an awesome manner! Love it!
God... Watched 10 videos continuously...best channel for backend Guyz...Keep posting..:)
Thank you so much 😀 enjoy!
Genuinely best rmq tutorial on youtube
Thank you so much for this video!! I'm preparing for an interview tomorrow and this was so helpful! Now I'm going to search for the kafka video 😄
superb men, now I can teach my old fashioned office guys this tech. HAHAHA.. I am gonna rockkkkkk... Thanks..
God Bless You Brother. You teach very nice. Please be blessed and blessing for others. Love you brother😇
Hey Hussein. Your explanation is very nice and also your text readability is just perfect on screen. Thank you for sharing. Great job!
very interesting videos, hilarious teaching style, feel like watching a good movie. 0% boring
Very nice discussion I was looking for a long time I am very glad to find one like this and I see all of it
It's true, I can't approach rmq along with celery, because I just can't make connections in my head because of all the terms, and if you also mention details for each term your head is going to explode ) thanks for the video)
My concepts went from 0 to 100. Thanks man
Hussein, you have real, real goddamn value in your videos. I am so thankful for the knowledge you're imparting !
Good, simple, straightforward explanation with easily replicable example. Thank you.
Juan Carlos González thanks Juan Carlos! Appreciate it 🙏
This is the best video about rabbitmq that I have seen so far, you know how to explain it well! Thank you, I subscribe
This course is amazing... I'll CONSUUUUUUUUUME it.
Its very hard to find good rabbitmq crash courses. Thanks for making the video Hussein,
I am glad you used Node for the demo session. While all languages have their pluses and minuses, at least with Node, you picked a universal language in JavaScript that developers in all industries can relate to.
past two weeks onwards watching your awesome videos the phrase "let's jump into guys" was always running in mind Hussein
Very nicely explained. I love your videos.
Atif Ali thanks Atif!
Found your channel today and subscribed. Much love! I really like your style and am looking forward to watching your other videos.
Thanks Lee appreciate your message! Enjoy the content and let me know what should I talk about next
It was such a great video, Hussein.
Please make more videos on backend stuff.
Very nice to see an example using async and await.
2 minutes into the video and I already love your style!
Hey, you have real clear style of teaching, appretiate that. But I am afread I cannot imagine a crash course about RabbitMQ without explaining the exchanges, binding keys and queues.
You're have awesome energy, Man. Great Content!
This just helped me understand the architecture of a codebase I’m to work on. Thanks a lot! Awesome content
GREAT enthusiastic explanations !!! Plz do Kafka. Also video on pros and cons of different queuing systems and when to use which.
Your presenting style is awesome.
Appreciate you Kiran. Thanks 🙏
Your style of explaining and content is dope💗..I will get sleep if pitch and tone is consistent for long time..ur videos at 2x is perfect for me..
Thank you for this great content. Looking forward for the Kafka one. 👍
Excellent video! I really enjoy your enthusiasm for the topc.
scubadawg91 🙏 I appreciate that thanks 😊
WTF guys....who is talking abt his bad accent n all
Just remember one thing...he knows English language hence dats why we are able to get KT...otherwise this gem 💎 would not be accessible to wide audience
Great work Hussein! That was really helpful.
Glad I could help 😍
Thanks mate, your effort and style are great
Amazing video. Learnt a lot.
You remind me a lot of Michael Scott from 'The Office'
Awesome video! Thanks for another great one Hussein!
I recently discovered a really interesting stack of technologies called the TICK stack. Its four technologies so might be a little heavy for one or two videos, but I would love to hear your opinion on it and see you spin it up on docker and do some cool stuff with it!
Cheers!
Francisco Carneiro thanks Francisco!! Will check out the TICK stack. First time I hear about it
Hey! you are great .. very nice explanation. this helped me to learn rabbitmq work flow. Thanks
I am happy I could help! Thanks for your message 😊
Dude you are super listenable..... thanks for this.
This is great for start. It'd be great if you could extend this topic for a real life use case. I have read rabbitmq can be used for push notifications. How about a tutorial for that?
Loved that idea thanks for the suggestion. RabbitMQ as We discussed supports push by default so it make sense to be used for push notifications.. but honestly I think redis is better and easier to implement for such use case just because of how complicated RabbitMQ is.. still good use case and would to consider making a comparison video.. thanks! Cheers
I tried to implement rabbitMQ for fast Performance Endpoint, I didn't find enough information to my errors, apache kafka worked much better...
What a great video, great channel and great guy called Hussein!!!)) Thank you sooooooo much for your work and videos, keep up the good!
Ahaahhahaha, "it is very easy to install sir, npm install amqplib". Really fun, man. Keep going bro.
Here are few problems which one can find interesting:
1. Whats if multiple consumers are connected to a single Queue, and only one of them acknowledges the message and due to some reason the other consumer failed and want to process the message again, how to do this?
2. I can clearly see, very soon there will be a huge need to load balance this Pub Sub Queue model, being a stateful model is very tricky, how fo we tackle that?
Thank hussain for a wonderful tutorial. Don't need your answers on this, just wanted to share my thoughts.
Good insights
1) the message that is not acknowledged because of a failure won’t be removed from the queue so the next client that starts will pick that message again. All sorts of problems with that, did the message actually got processed but couldn’t acknowledge? Did the acknowledge message get lost? Look up the two general problem
2) not sure about RabbitMQ (i think yes) but kafka does have distributed queue
Glad you liked it!
Best practice says to not open a channel each time you are publishing, and keeping connection long-lived. There is a benefit of closing connection and channel on publisher?
Hi Hussein, does rabbitMQ (and MQ in general) use the pub/sub pattern? can the consumer subscribes to the publisher and wait for a message without the need to actively consume them on its own?
That is correct RabbitMQ as I explained in the video uses Pub/sub pattern. Where you have subscribers (consumers) connecting to a queue and a publisher publishing to a queue.
As for your second part of your question RabbitMQ uses PUSH model where a consumer connects to a queue and any message published to the queue will be automatically PUSHED to the consumer/subscriber without the subscriber has to request actively it by itself. Kafka also uses pubsub pattern but they use different message delivery approach (not push) they use long polling..
Im making a pubsub video that will be posted in the coming days.. stay tuned and keep these interesting questions coming
Have a great weekend 😊
An Awesome Video !!. Can you also do an admin video for RabbitMQ ? Like how to manage the queues, how to republish a queue. How to republish a dead letter queue etc or if u already have it, kindly point me to it. Thanks a lot and your entire video is awesome and not boring at all. Keep up the good work of teaching others...👍
thanks for the video I will take a look at kafka before I start learning either of the 2.
was looking for rabbitmq for long time. thanks :)
Enjoy the course! 😊
Came here to understand rabbitmq and its exchanges
7:39 Hussein: "you don't have to know about this, we're not gonna talk about exchanges"
Aleg Malinovsky 😅 sorry I do need to make another video about exchanges.
thanks Hussein you're doing great
I have a doubt regarding RabbitMQ installation. Either we can directly install RabbitMQ software manually or we can install it via docker.
Which method we should use?
Excellent tutorial. Best RabbitMQ video I have come across on the entire web. Well done and if you could do one for Kafka as well that would be great!
Thanks Andrew! Kafka video is on the making, cheers
how do you have completions in vscode before installing the library?
Good video. Did feel like Elmo was talking to me though.
Can you do a video on Nats streaming, it can handle more messages than rabbitmq but does not hold messages in database. I am currently building a microservice app and I am using Nats but I am tempted to use rabbitmq and the only thing that make them difference is the ability to persist messages (if I am not wrong in regards to RabbitMQ) and also in Nats you can have multiple consumers listening to same queue (not sure with rabbit mq) and only one of them can process that message.
This is very good when you have multiple replicas of server or multiple instance of servers and one of them can process the message.
The down side to this is that, if the system is down (Nats streaming) then all messages are gone) other than that it can handle
so you have to find a way to hold the un acked messages and push them from your db to nats to other services where it's appropriate.
what's your input on this ?
a video comparison on the two and their limitation would be a great idea brother Hussein.
When I hover over message, it doesn't show anything. How do you trigger opening that window in VSC?
can you tell why QoS in MQTT is considered a feature of MQTT where http over TCP is checking for delivery as well?
Failed to establish message queue error...Any suggestions how to resolve.
Thanks Hussein! you are a awesome ! and simlpe clear!
Glad it is! let me know if there is anything I could do better or simplify or if there is a point I probably missed (which I probably have haha) Cheers! and stay awesome!
Please make a video on how you study, just how mahn awesome ❤
Outstanding, love the high quality videos!
Joshua Gainey Thanks Josh! Enjoy the content 🙏
Hi Hussein. thanks for the very good video. However I don't understand where task Queues like Celery fit into this. Can you explain why we need Celery + rabbitmq?
Thanks
Great video Hussein, thank you!
You are a great teacher and you make me laugh
I disagree with your conclusion. First of all, the complexity you've described is actually inherent to decoupled, event-driven architectures. Pub/Subs and Push data transfers is a way of decoupling pieces of systems and reducing dependencies. Very common in anything where data sources (sensors/microservices/clients) can dynamically enter or leave and you'd like to ensure your system is somewhat robust.
This course is amazing... Thank you so much!!!!!
Very nice tutorial! This is really helpful to me. Would it be possible also to include header? For example the consumer expects the message to have a valid header authorization sent by the publisher (let's say a JWT token, Authorization: Bearer eyj-some-token)
i just read this term this week and you made a video about it lol
yes! new thing to learn thats what makes good software engineer! Enjoy
I'd like to see you do a video on zeromq. It seems less complex to me.
Good idea! Added to the list. Thanks Steve
how does rabbitmq acknowledge which consumer has received the message, does it maintain state for that?
if 3 out of 10 consumers have not received it, does it remember that they have not received and maintains a state for that?
Loved the final thought on crazy abstractions. An engineering solution should extract complexity not make it worse.
Hi how to handle no channel available to process error .
Great video, fantastic example.
Great stuff Hussein! Any plans on doing a Redis Streams episode?
The number was "7" and not 7 because of the API of process.argv
Thanks for this. I was trying to figure out what was going on there. That makes it clear.
Yes, I do want a kaffka tutorial, please do it :p, thank you so much ........
how to connect go with rabbitmq cluster , nginx reverse proxy does not work , could u do a video on that (:
is it okay to use rabbitmq in a monolithic application (for handling many requests at the same time) ?? and if you can make a video on how to scale a monolithic application for small teams
Absolutely fine, rabbitMQ is not exclusive for Microservices
@@hnasr Thanks
how does your vs code editor does that code completion of the amqplib if the node_modules are not installed yet in your project?
SuperMichielv it might be a cache of a previous install of amqplib that I made. Interesting
@@hnasr thanks for your response!
what is the other alternative open source MQ if you say if Rabit MQ is complex..
I am still looking to be honest, I tried ZeroMQ ruclips.net/video/UrwtQfSbrOs/видео.html but wasn’t exactly what i was looking for
People suggested for me to look NSQ but haven’t done that yet..
@@hnasr I have worked on IBM MQ.. whats your thoughts on that ? is it the best ?
thank you
how write a publisher client django without celery please help me
What an explanation! Nice :)
Crazy dude ;))) thx for happy moment
Thank you very much for the video!!!