0

I've 7 processes hosted on same machine (C# .NET Framework), each of them is wrapping a NServiceBus (gateway) endpoint to communicate with remote-site processes (MSMQ-based Transport, InMemroyPersistency). I was wondering if from performance/network utilization aspect, should i split each endpoint to use it's own port or can all of them share the same port for the gateway ReceiveChannel definition?

Thanks

tal.f
  • 73
  • 5

1 Answers1

0

By default the gateway use the HttpChannel with a concurrency set to one. Assuming you set the concurrency per channel to something feasible that fits your use case and given that the implementation is non-blocking you are only restricted by how much throughput a single HttpListener that is used under the hood can handle.

Given that each endpoint should have its own responsibility in terms of handling/processing messages and therefore potentially needs to fulfill its own Service Level Agreement you might want to have more control over how to expose those endpoints. That being said from the gateway perspective port sharing should be possible and I would suggest do run load tests according to the requirements you have for you project to make the right tradeoffs.

Daniel Marbach
  • 2,294
  • 12
  • 15
  • _"only restricted by how much throughput a single HttpListener that is used under the hood can handle"_ - is there a known value for that? or is it depends on other environmental parameters? – tal.f May 27 '20 at 10:01
  • I couldn't really find anything. HTTP.sys under the covers seems to do the connection handling, bandwidth throttling etc. depending on the settings from the registry https://support.microsoft.com/en-us/help/820129/http-sys-registry-settings-for-windows – Daniel Marbach May 27 '20 at 12:15