As a best practice, direct exchanges are the fastest to use. Even when using direct exchanges, those with multiple bindings require more time to calculate where messages must be sent. There are some additional best practices to consider for routing.
Designing a system with routing in mind
Every endpoint is a service or application. Unlike CC, which operates between a car and, for the most part, a single application layer, many microservice architectures pass messages through dozens of services.
CC designed their system architecture around small services. They combined operations where it did make sense. After designing a smaller system, they consider where additional exchanges or queues could be beneficial. This kept the overall design small enough without limiting processing power.