Exchange это просто посредник который решает как роутить сообщения в очереди, тем самым отвязывая немного продюсер от знания как и кем будут сообщения обрабатываться.
Нужно ли выносить в отдельный файл exchange, и стучаться к нему при отправке сообщения, или можно оставить в коде продюсера ?
Что значит "выносить exchange в отдельный файл"? Exchange он в брокере.
Продюсеру нужно лишь имя exchange знать чтобы сообщения туда постить, и Routing Key при необходимости.
Создавать exchange лучше конечно не в продюсере.
Чтобы перестраховаться и убедиться что exchange существует можно, конечно, отправить сообщение с объявлением exchange с флагом passive(
https://www.rabbitmq.com/amqp-0-9-1-reference.html... )