The sample demonstrates basic command routing between endpoints.
Running the project
- Start all the projects by hitting F5.
- In the Sender's console window send some orders by pressing S
- In the Sender's console window cancel some orders by pressing C
- 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");