SzymonPobiega / NServiceBus.Router

Cross-transport, cross-site and possibly cross-cloud router component for NServiceBus
MIT License
5 stars 10 forks source link

NServiceBus 8 support #52

Open fab60 opened 1 year ago

fab60 commented 1 year ago

Hi Simon, any plan to support the latest version of NServiceBus?

Thank you!

pihalve commented 1 year ago

Same question from me. I really hope you plan to do so :)

SzymonPobiega commented 1 year ago

Hi

Sorry for the delay. I was a bit swamped with work recently. Yes, I definitely do but given that the NServiceBus.Transport.Bridge is now the officially supported tool, I would be grateful if you could take a look at its feature and provide us with feedback on how to evolve the transport bridge so that it can fully replace the Router in the future.

rioka commented 1 year ago

@SzymonPobiega

so that it can fully replace the Router in the future

Does this mean right now there are things the router can do, but transport bridge cannot?

SzymonPobiega commented 1 year ago

Yes, the Router is designed to be fully customizable via a pipeline (similar to NServiceBus). The Bridge is designed to specifically solve the problem of moving messages between pairs of queues.

They operate on different logical levels, similar to how switches and routers operate on different levels of the network stack, for example the regular endpoints are not aware of the Bridge but to use the Router, they need to use the Router connector plugin.

The bridge should be able to address most of the scenarios and if does not address some scenario, Particular is going to prioritize work on getting that scenario to work. The Router, on the other hand, being built as an open source hobby project, has been design in such a way to be extensible by the users in case some scenario is not address out-of-the-box.

rioka commented 1 year ago

@SzymonPobiega

Thanks for the extensive explanation, and kudos again for your work

vborioni-onit commented 1 year ago

Hi @SzymonPobiega what about the NServiceBus.Router.Connector ? I'm upgrading nsb from 7 to 8 and it's complaining that NServiceBus.Router.Connector is not compatible image

pihalve commented 1 year ago

So I've finally had some time to look at NServiceBus.Transport.Bridge. However, as far as I understand how it works, it will not be a very good fit for our purpose. To illustrate our setup I've devised the following drawing.

image

The thing is that we have a very "popular" service producing many events that many subscribers want to listen to. More subscribers are added regularly. This works great with NServiceBus.Router, but for NServiceBus.Transport.Bridge it seems to me, that I would have to configure the bridge (publisher in drawning) every time a new subscriber is created or subscribers want to listen to more event types, i.e. the knowledge (configuration) about how everything is routed is centrally placed in the bridge, and that would be quite problematic in our setup.

One could argue that our "Popular" Business System would seem to be a bit of a monolith with way too much responsibility, since it has so many subscribers and event types. And that would be a true assessment. But this is not something that we can easily change. Years of effort has gone into this legacy system, and taking it apart will be years of effort (we are continuously working on it, but it's a hard sell to the business people, so it's become somewhat of a marathon).

So, if I've understood the workings of NServiceBus.Transport.Bridge correctly, I would be very interested if NServiceBus.Router continued existing, or alternatively that the bridge could be made flexible enough to suit our need.

Looking forward to hearing some thoughts on this.

nick-fotopoulos commented 1 year ago

I just noticed that release 4.0.0 was published to nuget.org. Are all of the changes included in this from the nsb-v8 branch?

https://github.com/SzymonPobiega/NServiceBus.Router/releases/tag/4.0.0

SzymonPobiega commented 9 months ago

@nick-fotopoulos yes