kgrzybek / modular-monolith-with-ddd

Full Modular Monolith application with Domain-Driven Design approach.
MIT License
11.14k stars 1.75k forks source link

Never considered a third party lib for outbox implementation? #33

Open paulvanbladel opened 4 years ago

paulvanbladel commented 4 years ago

You rely on some deliberately selected 3rd party libs but the outbox implementation is part of your own code base. I have played with https://github.com/dotnetcore/CAP and it feels very much ok. I understand that in the monolith world there is less need for a queuing infrastructure but cap supports also in memory transports. Nonetheless, even in a monolith there is need for retries (e.g. when the integration event handler throws) which can be quite configured quite easy in Cap.

kgrzybek commented 4 years ago

Hi @paulvanbladel

I don't have experience with this library, I will look at.

I would say that the outbox pattern in that example is implemented using 3rd party library - Quartz.NET because what we need for Outbox is background processor.

Quartz.NET is ok but for more advanced scenarios (as you wrote - retries) and monitoring I use Hangfire. I see that CAP is similar to Hangfire, even has the same Dashboard GUI.

I didn't want to include many components at the beginning because I wanted to not overcomplicate this solution. However, I think about adding some more advanced solution in this area to one of the module now.

blenddata commented 3 years ago

Hi @kgrzybek @paulvanbladel Can you please provide a fork that implements CAP or guide me to do this please?