You are the only one that always give practical example to these concepts. Can you give tutorial on Domain Driven Design, Hexagonal Architecture and Spring Modulith?
Hello Prashant, noted ✅️. I already have plans for this, but with my DevOps live course running, it's really difficult for me to manage time on weekends. I will definitely plan for it starting next month.
Spring Rocks! So do you @Javatechie, Thank you!. This is indeed a much better design rather than Autowiring a thousand services in a class. Very simple and right at the heart of SOLID. Great stuff. I am not sure of the idea of running it as @Async as the discharge process in this case is ONLY successful if ALL the downstream services are successful. Anything fails, the whole things fails. Unless and until we have a method to handle the failures, blocking approach is better. Anyway, Thanks again!
@@Javatechie Thank you. I just did a PoC myself. I used SpringRabbit (As my micro-services are using messages and not API calls. API calls gets terminated at Gateway and from there its messages.) Once the message is received, I am sending the message body to appropriate event class based on the message header. Then instead of writing massive long service methods, now I can write simple event handlers where each event is a small feature - such as SignInEvent, SignUpEvent, ForgotPasswordEvent - so easy to understand, so easy to test and maintain. Talking about testing, if you can cover the JUnit part of event testing that would be awesome too. This whole thing made my end to end architecture fully async as well. Earlier it was async only up to the method calls. So thanks again! Waiting for the next video to learn how are you handling the error handling. Cheers! ❤
Thank you so much Basant for providing useful & Awesome content, i have learnt many things from your videos and keep going on...please provide some more real time project videos .its a request.
Thank you for the content. Your content always helping me to learn new new things, keep on going. Could you please clarify me on handling exceptions while using Spring Events? Also how to capture the result of the execution in the publisher?
Thanku basant it's really amazing but one thing my Seniors were Telling not to use autowired annotation they always doing DI through RequiredArgumentConstrutor why is that??
thank you Brother for sharing new concept :). I have one query here, Based on what order sprint events listener will execute. understood this is sync process but want to know how listener orders is preserved here
Currently it will execute in async manner but you can maintain order of execution using @Order(count) in listerner Note : this is not recommended approach 😐. Because async means can't predict
Hi you explained all void services. What if we want to retrurn from one service and consume the output in different service. Also What if any service in your example throw an exception? I know if exception thrown from thread will not hamper other threads all are running in thier own threads.
In that case if service A need to be the first consuming event E and B second, all you need is to do is to make the service A publish another event E1 after consuming event E and then service B consume event E1. E -> A -> E1 -> B
Hi Basant, I love watching your videos, Thanks for creating top notch content. Love the way you explain with examples. I would like to request you if you can a roadmap based on your video content, which would allow us to successfully land our dream java dev job.
Thank you so much, but I have one question. In the case of distributed microservices, is this approach sustainable, or do we have to use message brokers?
If we have different methods in Notification or Other Handler classes, then how it takes excecute perticular method for the event. If I mention @EventListener @Async for other methods too.. Could you please explain it. Thanks for your way of explanation. Big fan of You ❤️
As I understood they are to reusable in other services (spring-apps)? I don't see really use case where this will be better solution than just use async at top of async method.
@djoleezcool, there's a difference.. architecture wise EventListener approach is better. Here the parent method is not tight coupled. So, in future, if any child method is removed from the process or any new process needs to be added, no changes are required in the parent method. We just need to remove the Listener from the child method or add a new Listener.
I understand. Tight coupling issue but with interface design we can make it loose coupling. Just like spring provides ApplicationEvent a abstraction we can have our own. We should have a custom annotation that will using executor service to make calls in async nature
I understand, but this is a feature of the Spring framework. If your app is legacy and not using Spring, you can go with the interface approach. This approach is not fully tightly coupled but only partially.
The best and most simplified example. Thank you.
You are the only one that always give practical example to these concepts. Can you give tutorial on Domain Driven Design, Hexagonal Architecture and Spring Modulith?
Yes I will thanks buddy 👍
Everytime I learned something unique and new from you regarding springboot. :) Will wait for exception handling part.
Thank you Basant! Simply love these contents. 👏👏👏👏
Sir please do spring boot microservices real time project covering all patterns and tools please it's a request
Yes
Hello Prashant, noted ✅️. I already have plans for this, but with my DevOps live course running, it's really difficult for me to manage time on weekends. I will definitely plan for it starting next month.
@@Javatechie even if it is paid also we are ready because we are eagerly waiting for your content
Yes
No need to pay Prashant it will be completely free course I will do in youtube
Thanks Basant. Appreciate your efforts, God bless you. 🙂🙏
Thank you so much Basant for the exclusive content 🙏
Thank you Basant, appreciate your efforts to make these videos.
By seeing your hardworking and deliver free contant is also motivates me to do some for society without any self interest. Hat's off sir....❤❤❤
Spring Rocks! So do you @Javatechie, Thank you!. This is indeed a much better design rather than Autowiring a thousand services in a class. Very simple and right at the heart of SOLID. Great stuff. I am not sure of the idea of running it as @Async as the discharge process in this case is ONLY successful if ALL the downstream services are successful. Anything fails, the whole things fails. Unless and until we have a method to handle the failures, blocking approach is better. Anyway, Thanks again!
Hello Arun , I do agree but same thing can be handle with async as well I will cover that error handling next
@@Javatechie Thank you. I just did a PoC myself. I used SpringRabbit (As my micro-services are using messages and not API calls. API calls gets terminated at Gateway and from there its messages.) Once the message is received, I am sending the message body to appropriate event class based on the message header. Then instead of writing massive long service methods, now I can write simple event handlers where each event is a small feature - such as SignInEvent, SignUpEvent, ForgotPasswordEvent - so easy to understand, so easy to test and maintain. Talking about testing, if you can cover the JUnit part of event testing that would be awesome too.
This whole thing made my end to end architecture fully async as well. Earlier it was async only up to the method calls. So thanks again! Waiting for the next video to learn how are you handling the error handling. Cheers! ❤
Thank you
nicely explained Spring application events.
Thanks Basant !! Awesome content !!
Thank you so much Basant for providing useful & Awesome content, i have learnt many things from your videos and keep going on...please provide some more real time project videos .its a request.
Sir how listeners are maintaining the sequence? I mean how can we set the sequence of method execution?
I don't think we can maintain sequence in async flow but good question let me check about this
@@Javatechie can we use @Order annotation?
No.in async order will not work as far i know
Good one
One question, how to consume clean the room before go to billing for example
We can set the order only if it is synchronous buddy, since it is async we cannot expect order
Thank you bro 😁😊. I am learning now things
Thank you for the content. Your content always helping me to learn new new things, keep on going. Could you please clarify me on handling exceptions while using Spring Events? Also how to capture the result of the execution in the publisher?
Thanks buddy 🤝
How do we handle errors in this case? How to reprocess the failed events?suppose if house keeping service fails, how to handle it?
I will cover that in next part
@@Javatechie Thanks
@@Javatechie you are the GOAT
Thanku basant it's really amazing but one thing my Seniors were Telling not to use autowired annotation they always doing DI through RequiredArgumentConstrutor why is that??
thank you Brother for sharing new concept :). I have one query here, Based on what order sprint events listener will execute. understood this is sync process but want to know how listener orders is preserved here
Currently it will execute in async manner but you can maintain order of execution using @Order(count) in listerner
Note : this is not recommended approach 😐. Because async means can't predict
@@Javatechie Basant For my business case, I need to execute in the sync manner, still can I use spring events ?
Hi you explained all void services. What if we want to retrurn from one service and consume the output in different service.
Also What if any service in your example throw an exception? I know if exception thrown from thread will not hamper other threads all are running in thier own threads.
Thank you Basant for this awesome video. One question what if one of the services fails to process the event then how do we handle this scenario?
I will cover this fault tolerance part
What if we need to maintain a order of execution of services consuming the event. How can that be handled.
In that case if service A need to be the first consuming event E and B second, all you need is to do is to make the service A publish another event E1 after consuming event E and then service B consume event E1.
E -> A -> E1 -> B
BRO!!! You are great 😅
Hi Basant,
I love watching your videos, Thanks for creating top notch content. Love the way you explain with examples. I would like to request you if you can a roadmap based on your video content, which would allow us to successfully land our dream java dev job.
Thanks for your kind word surely I will prepare one 🙂
Thanks Basant.. When could be except the Second Part of Helm
Wonderful content bro.
good content
Thank you so much, but I have one question. In the case of distributed microservices, is this approach sustainable, or do we have to use message brokers?
Yes ,This approach is only for within a application (intra application communication )
If we have different methods in Notification or Other Handler classes, then how it takes excecute perticular method for the event. If I mention @EventListener @Async for other methods too.. Could you please explain it.
Thanks for your way of explanation. Big fan of You ❤️
Hey bro , would you like to make a video on Jackson api , converting json file to java object and vice versa ?
Hi, can you please do a video on sending data with gzip requestBody with spring reactor Webclient.
Yes I will
Hi Sir,
Do you do 1:1 mentoring in which we can ask our doubts related to java spring boot microservices?
It can be through chat
How do we handle exceptions in kafka (both consumer and producer).
Thank you 🙏🏿
Thank you Sir😊
As I understood they are to reusable in other services (spring-apps)? I don't see really use case where this will be better solution than just use async at top of async method.
It will be very useful for monolithic architecture please try re visit the intro again
@djoleezcool, there's a difference.. architecture wise EventListener approach is better. Here the parent method is not tight coupled. So, in future, if any child method is removed from the process or any new process needs to be added, no changes are required in the parent method. We just need to remove the Listener from the child method or add a new Listener.
thanks a lot
Is there job workers in spring like in laravel?
what if we have a hierarchy of execution we need to maintain?
How to do the exception handling if there is issue with notification service?
It's good to propagate the error from service to the caller
@@Javatechie but let's say error is in notification service which is async. What is the best way to handle the error
We can do a direct method call also, why do we need events.
Hello Rabindra, I explained it what's the drawback of durect method call
I understand. Tight coupling issue but with interface design we can make it loose coupling. Just like spring provides ApplicationEvent a abstraction we can have our own. We should have a custom annotation that will using executor service to make calls in async nature
I am asking this because our application doesn't use spring. It is a legacy one but we want above functionality
I understand, but this is a feature of the Spring framework. If your app is legacy and not using Spring, you can go with the interface approach. This approach is not fully tightly coupled but only partially.
Thanks
Thank you for your gift 🎁. Keep learning 😊
How do we handle errors.. With events
This I will cover in next video with other advantages
Hi Sir please plan for migration project sir
Add database integration
why so bright ? i'd rather read the docs