Defines the behaviour that the topology config needs to implement.
exchange() :: {String.t(), keyword()}
gen() :: [exchange()]