In Version 4.2 and below Distributor was included in the NServiceBus package.
In Version 4.3 the built-in Distributor has been deprecated. The new dedicated NServiceBus.Distributor.MSMQ package should be used instead.
Running an embedded distributor process alongside the worker (also known as Master mode) is not supported in Versions 6 and higher. Instead, a stand alone Distributor endpoint running NServiceBus 5 should be used.
Worker configuration sections like
MasterNodeConfig are obsoleted and
endpointConfiguraiton.EnlistWithLegacyMSMQDistributor should be used instead. For more information refer to Upgrading a Distributor-based scaled out endpoint to Version 6 documentation.
If running with NServiceBus.Host.exe, the following profiles start the endpoint with the Distributor functionality:
To start the endpoint as a Distributor install the NServiceBus.Distributor.MSMQ NuGet and then run the host from the command line, as follows:
The NServiceBus.MSMQDistributor profile instructs the NServiceBus framework to start a distributor process on this endpoint, waiting for workers to enlist to it. Unlike the NServiceBus.MSMQMaster profile, the NServiceBus.MSMQDistributor profile does not execute a worker process.
It is also possible to use the
NServiceBus.MSMQMaster profile to start distributor and worker processes on the endpoint. To start the endpoint as a Master install the NServiceBus.Distributor.MSMQ NuGet and then run the host from the command line, as follows:
When self hosting the endpoint, use this configuration:
// Running the Distributor and a Worker busConfiguration.AsMSMQMasterNode(); // or busConfiguration.RunMSMQDistributor(); // Running the Distributor only busConfiguration.RunMSMQDistributor(false);
Any NServiceBus endpoint can run as a Worker node. To activate it, create a handler for the relevant messages and ensure that the
app.config file contains routing information for the Distributor.
If hosting the endpoint with NServiceBus.Host.exe, to run as a Worker, use this command line:
Configure the name of the master node server as shown in this
app.config example. Note the
<configuration> <configSections> <!-- Other sections go here --> <section name="MasterNodeConfig" type="NServiceBus.Config.MasterNodeConfig, NServiceBus.Core" /> </configSections> <!-- Other config options go here --> <MasterNodeConfig Node="MachineWhereDistributorRuns"/> </configuration>
Read about the
DistributorControlAddress and the
DistributorDataAddress in the Routing with the Distributor section.
If self-hosting the endpoint here is the code required to enlist the endpoint with a Distributor.
Similar to self hosting, ensure the
app.config of the worker contains the
MasterNodeConfig section to point to the host name where the distributor process is running.