# Command routing The sample demonstrates basic command routing between endpoints. ## Running the project 1. Start all the projects by hitting F5. 1. In the Sender's console window send some orders by pressing S 1. In the Sender's console window cancel some orders by pressing C 1. 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. ```cs 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. ```cs var command = new PlaceOrder { OrderId = orderId, Value = value }; await messageSession.Send(command); Console.WriteLine($"Order placed: {orderId}"); ``` ### 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. ```cs var command = new CancelOrder { OrderId = orderId }; await messageSession.Send("Samples.CommandRouting.Receiver", command); Console.WriteLine($"Order canceled: {orderId}"); ```