Getting Started
Architecture
NServiceBus
Transports
Persistence
ServiceInsight
ServicePulse
ServiceControl
Monitoring
Modernization
Samples

Command routing

Component: NServiceBus
NuGet Package: NServiceBus 9.x

The sample demonstrates basic command routing between endpoints.

Running the project

  1. Start all the projects by hitting F5.
  2. In the Sender's console window send some orders by pressing S
  3. In the Sender's console window cancel some orders by pressing C
  4. Both messages are sent to the Receiver which logs a message

Code walk-through

Endpoint configuration command routing

Command routing can be specified in the endpoint configuration, as the sample does for the PlaceOrder command.

var routing = endpointConfiguration.UseTransport(new LearningTransport());

routing.RouteToEndpoint(
    messageType: typeof(PlaceOrder),
    destination: "Samples.CommandRouting.Receiver"
);

Whenever the Sender sends a PlaceOrder command it does not need to specify a destination. This is the preferred method for routing commands.

var command = new PlaceOrder
{
    OrderId = orderId,
    Value = value
};

await messageSession.Send(command);
Console.WriteLine("Order placed");

Per-message command routing

In special circumstances, a command can be routed when it is sent.

Whenever the Sender sends a CancelOrder command it specifies the destination endpoint.

var command = new CancelOrder
{
    OrderId = orderId
};

await messageSession.Send("Samples.CommandRouting.Receiver", command);
Console.WriteLine("Order canceled");