Hey, fanout and direct look like simple specialisations of topic. Am I right?
Yep. Direct exchanges can be simulated by using topic exchanges without wildcards, and fanout exchanges can be simulated by binding to topic exchanges with a full wildcard pattern. The different kinds of exchange exist mainly for clarity’s sake: it’s easier for an observer looking at a system to see the intent behind the way it’s configured. Secondarily, it opens up opportunities for optimising the less-general kinds of exchange.