abpframework / abp

Open-source web application framework for ASP.NET Core! Offers an opinionated architecture to build enterprise software solutions with best practices on top of the .NET. Provides the fundamental infrastructure, cross-cutting-concern implementations, startup templates, application modules, UI themes, tooling and documentation.
https://abp.io
GNU Lesser General Public License v3.0
12.74k stars 3.41k forks source link

Distributed Event Bus RabbitMQ integration #593

Closed hikalkan closed 5 years ago

natiki commented 5 years ago

@hikalkan What is the rationale in terms of integrating message busses? Will there be integrations for other ones aside from RabbitMQ? Does that mean heaps of modules implementing IDistributedEventBus? I thought the plan was to use something like https://github.com/rebus-org/Rebus which ultimately supports many busses out of the box?

hikalkan commented 5 years ago

We are already considering Rebus integration (https://github.com/abpframework/abp/issues/376). RabbitMQ integration will be a simple integration for test the distributed event system. We may then drop it or maintain in parallel with the Rebus integration. My first impression on Rebus was not clear in some points. I will re-investigate it.

natiki commented 5 years ago

Hi @hikalkan,

My first impression on Rebus was not clear in some points.

Yes mine as well.

I would like to add support for https://nats.io/ (first the streaming version as it has guaranteed delivery and then later the vanilla version) for both this project and Rebus. So just wondering if you want me to implement it for IDistributedEventBus or not? I would be happy to maintain it.

Also I assume somewhere there will be a pluggable serialization aspect as well? Ultimately for performance, on wire efficiency and robustness (automatic data versioning) I prefer to use Google's Protocol Buffers using Marc Gravell's https://github.com/mgravell/protobuf-net rather than JSon. But ultimately if this was pluggable then everyone could use their "favourite" serialization. So if you have an interface or part of the framework defined I would be happy to add Protocol Buffers at the same time. Just let me know.

hikalkan commented 5 years ago

So just wondering if you want me to implement it for IDistributedEventBus or not? I would be happy to maintain it

It would be good, but a bit early now since I should complete the interface and some other parts and test it. Then you can contribute and it's very appreciated :)

Also I assume somewhere there will be a pluggable serialization aspect as well

Yes, the serialization will be a replaceable service (like https://github.com/abpframework/abp/blob/master/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/IRabbitMqSerializer.cs)

natiki commented 5 years ago

@hikalkan nudge me when u r ready for a PR in whatever form.

natiki commented 5 years ago

@hikalkan where to as this one is being closed?

hikalkan commented 5 years ago

Source: https://github.com/abpframework/abp/tree/master/framework/src/Volo.Abp.EventBus.RabbitMQ Usage: https://github.com/abpframework/abp/tree/master/samples/RabbitMqEventBus

natiki commented 5 years ago

So I can start coding against the interfaces if I wanted to start implementing https://github.com/abpframework/abp/issues/593#issuecomment-441828289

hikalkan commented 5 years ago

Yes, IDistributedEventBus interface is good to start.

yadurajshakti commented 4 years ago

Dear @hikalkan Do we have Amazon MQ integration support as well?

I am very new to this framework and have to decide between Rabbit MQ or Amazon MQ. Any help would be greatly appreciated. :)