Request Response Messaging Pattern with MassTransit

  Рет қаралды 15,417

Milan Jovanović

Milan Jovanović

Күн бұрын

Пікірлер: 82
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
Want to master Clean Architecture? Go here: bit.ly/3PupkOJ Want to unlock Modular Monoliths? Go here: bit.ly/3SXlzSt
@aliengarden
@aliengarden 16 күн бұрын
I came up with the exact same logic of having a Service that returns a Result from a request before seeing this video. Love to see Milan coming to the same conclusions!
@aliengarden
@aliengarden 16 күн бұрын
I was also very confused with MassTransit's weird way of dealing with polymorphism. This video cleared a lot of the confusion I had with the documentation.
@MilanJovanovicTech
@MilanJovanovicTech 16 күн бұрын
Glad we're on the same page 😁
@dcernach
@dcernach 11 ай бұрын
Great video! Please consider creating a series of videos about MassTransit, with a focus on topics like State Machines, Routing Slips, and more. MassTransit is a fantastic library to be used within microservices!
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
I already have a few about MassTransit, but I'll happily do more
@nove1398
@nove1398 11 ай бұрын
I would like to see these as well
@ferdikosasih
@ferdikosasih 10 ай бұрын
Hi have you ever compared with cap library? What the differences
@GeoffSeeley
@GeoffSeeley 11 ай бұрын
You should probably handle timeouts for Requests as well because there is no guarantee you'll get a Response. This is one of the fun things about Event driven systems 🙂
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
The default timeout is 30s. If it takes more than that to get a response, you probably shouldn't be doing request-response anyway. But I agree that it should be handle in some way
@kodindoyannick5328
@kodindoyannick5328 Ай бұрын
Great video! Thanks so much!
@MilanJovanovicTech
@MilanJovanovicTech Ай бұрын
Glad you enjoyed it!
@KenzoArts
@KenzoArts 11 ай бұрын
Hello Milan, Would you please consider making a course about Microservices? I love so much your videos !
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
It will happen at some point :)
@rezvlt9285
@rezvlt9285 10 ай бұрын
You always make the videos I most need. Thank you !
@MilanJovanovicTech
@MilanJovanovicTech 10 ай бұрын
I have a hunch for that 😁
@mohamedalaa8212
@mohamedalaa8212 11 ай бұрын
great video! How about making your next one on Circuit Breakers or Bulkhead pattern or more on MassTransit ? I'm sure it would be awesome
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
Great ideas!
@PhobiaQQ
@PhobiaQQ 11 ай бұрын
great video, but I could not find this pattern described in MassTransit documentation. It's a pity you missed a part how you set up a message broker here. Did you use separate queue for request/response? Also I found that request/response is async pattern for http communication, while request/reply is async messaging pattern
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
Here: masstransit.io/documentation/concepts/requests
@michaelreiners8437
@michaelreiners8437 5 ай бұрын
Thanks a lot! Exactly what I just needed :)
@MilanJovanovicTech
@MilanJovanovicTech 5 ай бұрын
You're welcome! :)
@ТимофейКлимов-ш7з
@ТимофейКлимов-ш7з 11 ай бұрын
What is benefits of using RabbitMq instead of http is this case? It looks like synchronous way of communicating
@akashkarve1991
@akashkarve1991 11 ай бұрын
Http is synchronous, rabbit mq request-response is async
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
It looks like it's synchronous because the caller has to "block" and wait for a response. But the benefit is that the services don't have to know about each other - unlike with HTTP. You need to know which API to call and where to find it.
@muhammadtariq8323
@muhammadtariq8323 11 ай бұрын
I requested you that make a video on .NET Core, static file response compression. Pre-Compress (br / gzip) or run time by .NET Core or IIS. Which are best and how to implement
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
Ok
@muhammadtariq8323
@muhammadtariq8323 11 ай бұрын
@@MilanJovanovicTech thanks 👍
@thedacian123
@thedacian123 4 ай бұрын
How did you registered in the DI container IRequestClient?
@MilanJovanovicTech
@MilanJovanovicTech 4 ай бұрын
You don't have to, it's automatically registered
@guilhermebley4001
@guilhermebley4001 11 ай бұрын
Great video. One doubt, when we use AsNoTracking in EF, we need to call it at beggining or end of query?
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
It won't matter.
@renatogomes3457
@renatogomes3457 11 ай бұрын
Hi Milan, awesome content as always! Is it a good practice to completely remove the use of MediatR and switch to Request/Response with MassTransit (InMemory, perhaps)? I'm a bit confused, but don't both serve the same purpose? Could you please provide some insights on this? Thank you very much.
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
Consider the ease of use with both libraries. MediatR is much simpler to configure and use than MassTransit. If all I need is an in-memory bus, MediatR is still a great choice
@pilotboba
@pilotboba 11 ай бұрын
imnsho Mediatr is for intraprocess messaging. Masstransit / Rebus are for interprocess messaging.
@n.sharma5810
@n.sharma5810 2 ай бұрын
Hi Milan, if possible please create a small project explains microservice architecture completely
@MilanJovanovicTech
@MilanJovanovicTech 2 ай бұрын
A small project can't explain that
@musazulu7013
@musazulu7013 11 ай бұрын
Excellent video @MilanJonovicTech, is it possible to get a tutorial about Kafka
@PhatBoyG
@PhatBoyG 11 ай бұрын
I have an entire series on Kafka with MassTransit: kzbin.info/aero/PLx8uyNNs1ri0RJ3hqwcDze6yAkrmK1QI5
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
Chris stealing the show 😁
@sunzhang-d9v
@sunzhang-d9v 11 ай бұрын
MassTransit+RabbitMq ,The consumer fails and can be put into the standby queue. What needs to be done?
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
Handle the error on the request client side
@amitkumdixit
@amitkumdixit 11 ай бұрын
Don't see any added benefit in this use case. One more failure point in the response cycle.
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
Anything can fail in distributed systems, I don't see that as a counter point
@DjDanny32
@DjDanny32 11 ай бұрын
MassTransit + RabbitMQ adds many benefits. For example, imagine your dB is down. Rabbit will retry your request (within your defined parameters) for you
@GamalSherbiny
@GamalSherbiny Ай бұрын
what advantage does this solution have over http request response?
@MilanJovanovicTech
@MilanJovanovicTech Ай бұрын
You don't need to know the address of the other service - only the message contract. This can be a big advantage. The downside is increased latency, as we're passing around more messages.
@coderider3022
@coderider3022 10 ай бұрын
How does it correlate response properly , doesn’t seem to enable sessions on a queue?
@MilanJovanovicTech
@MilanJovanovicTech 10 ай бұрын
Attaches a message ID
@makemeafirewall
@makemeafirewall 11 ай бұрын
The reason you said you register the ArticleViewsService as scoped is because IRequestClient is also scoped, how is it possible to generally check by DI container and the dependency chain to make sure I don't do anything funny in the registration I wasn't supposed to do? Is there a tool to see all the DI chain or the places where things are not using the same registration type?
@jeroen7362
@jeroen7362 11 ай бұрын
if you use the built in DI you will find out for sure without tools, when a singleton tries to use a scoped service. the other way around is perfectly fine. You can use scoped services in a singleton by creating a scope around it.
@makemeafirewall
@makemeafirewall 11 ай бұрын
@@jeroen7362 what happens when a singleton tried to use a scoped service without creating a scope? Do I get an error? Always?
@makemeafirewall
@makemeafirewall 11 ай бұрын
@@jeroen7362 we had an issue with the DB context that was used by a singleton and we changed it to be transient to solve the problem, don't exactly remember. I wanted a tool that shows me the dependency tree to find these errors if I suspect I did something wrong with the service registration.
@jeroen7362
@jeroen7362 11 ай бұрын
@@makemeafirewall as far as i have experienced it will always throw a runtime exception like "Cannot consume scoped service from singleton" This would usually only happen during development if you even touch the appservice in your debug session.
@makemeafirewall
@makemeafirewall 11 ай бұрын
@@jeroen7362 i think it gets more complicated when a transient is injected with a scoped or the other way around. There should be a way to get the tree and search it, also it would be great to see the request pipeline because sometimes the project is already running in production and you are not always aware of the order of things, especially handlers that are used or even registered using reflection
@nomad191
@nomad191 11 ай бұрын
Great Video. Where can I download the source code for this?
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
Hi, I share the source code on Patreon
@balajisairamnarasimhan
@balajisairamnarasimhan 11 ай бұрын
Can we use mass transit if we are making this cloud native microservices ? Benefit of using mass transit ?
@jeroen7362
@jeroen7362 11 ай бұрын
the benefit of MT is that you are decoupled from the transport/bustype. so locally you can run rabbit, or even rabbit in a docker. and in the cloud you use azure servicebus or other cloud bus. in unittest you can run in memory bus. your code is transport agnostic, only in the startup of the bus you need to start one bustype depending on an appsetting.
@balajisairamnarasimhan
@balajisairamnarasimhan 11 ай бұрын
@@jeroen7362 thanks a lot
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
You absolutely can
@balajisairamnarasimhan
@balajisairamnarasimhan 11 ай бұрын
@@MilanJovanovicTech thanks Milan so can you guide me the steps for that ? Or does it work internally as a container ?
@srik790
@srik790 11 ай бұрын
But I guess the UI composition technique is better in this scenario.
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
Perhaps
@srik790
@srik790 11 ай бұрын
@@MilanJovanovicTech Any plans to cover UI composition in your videos?
@haraheiquedossantos4283
@haraheiquedossantos4283 4 ай бұрын
By the way I agree with the comment below, like using some BFF to orchestrate. And I think messaging Request-Response pattern is better suited to workflows long running business process that span multiple boundaries when we are dealing with sagas. Don't you agree?
@giorgigiorgobiani9547
@giorgigiorgobiani9547 5 ай бұрын
Hello Milan, i use this request/response pattern with rabbitMQ, but sometimes i have an issue: when api B is in idle state (not recieving requests) rabbitMQ connection of api B is lost and when i send reqeust from api A with requestClinet i get timeoutexception. is there some method to overcome this issue?
@MilanJovanovicTech
@MilanJovanovicTech 5 ай бұрын
Nope. That's called temporal coupling. In request-response we assume the other side is always available. But that might not always be the case.
@giorgigiorgobiani9547
@giorgigiorgobiani9547 5 ай бұрын
@@MilanJovanovicTech ok but is there a way keep other side always available..to configure rabbitMQ connection to be all the time alive while api running..do u know such thing? If not, what is solution ..
@raghavendrahabbu
@raghavendrahabbu 4 ай бұрын
Where can I get complete source code?
@MilanJovanovicTech
@MilanJovanovicTech 4 ай бұрын
Patreon: www.patreon.com/milanjovanovic
@techpc5453
@techpc5453 11 ай бұрын
@MilanJovanovicTech
@MilanJovanovicTech 11 ай бұрын
👋
@BlueLabel1980
@BlueLabel1980 6 ай бұрын
Github for this expample?
@MilanJovanovicTech
@MilanJovanovicTech 6 ай бұрын
I share the source code on Patreon
How To Build Loosely Coupled Microservices With MassTransit
23:01
Milan Jovanović
Рет қаралды 34 М.
100K Subscribers Special: My Journey, Career Advice, Future of .NET
16:36
Nastya and balloon challenge
00:23
Nastya
Рет қаралды 57 МЛН
Bike Vs Tricycle Fast Challenge
00:43
Russo
Рет қаралды 69 МЛН
小丑妹妹插队被妈妈教训!#小丑#路飞#家庭#搞笑
00:12
家庭搞笑日记
Рет қаралды 36 МЛН
Build Clean Messaging in .NET with MassTransit
21:44
Nick Chapsas
Рет қаралды 99 М.
Creating a State Machine Saga With MassTransit (Orchestrated Saga)
15:41
Milan Jovanović
Рет қаралды 12 М.
MassTransit Bus Stop - Request Response via Messaging (RPC)
27:41
Chris Patterson
Рет қаралды 3,3 М.
Swagger is Going Away in .NET 9!
10:48
Nick Chapsas
Рет қаралды 95 М.
TCP/IP for Programmers
3:03:31
Eli the Computer Guy
Рет қаралды 102 М.
MassTransit, RabbitMQ - The Details
1:02:37
Chris Patterson
Рет қаралды 23 М.
Nastya and balloon challenge
00:23
Nastya
Рет қаралды 57 МЛН