In trying to understanding the difference between direct, fanout and topic exchanges, I want to confirm that the advantage of a topic exchange is that a producer pushes to an exchange and specifies a fully specific routing key, and queues can bind to multiple routing keys via wildcards. e.g. topic pushes to...
$channel->basic_publish($msg, 'logs-exchange', 'error.critical.ram')
And a queue that would message the on-call team on all critical errors would bind like...
$channel->queue_bind('on-call-team', 'logs-exchange', 'error.critical.*')
And a similar queue with error.*.ram
would message the sysops team responsible for increasing ram.
Is this the correct use case for a topic exchange, and is the topic exchange the only exchange that can support this flexibility? Conversely are both topic and fanout exchanges implementable by a topic exchange?