Детально не вчитывался, но перед каждым:
r_connection.NotifyClose(rabbitCloseError)
канал
rabbitCloseError для уведомлений о закрытии соединения нужно пересоздавать через
make.
Пруф:
https://github.com/streadway/amqp/issues/160
У svcavallar как раз так и реализовано:
rabbitConn = connectToRabbitMQ(uri)
rabbitCloseError = make(chan *amqp.Error) // <---- look here
rabbitConn.NotifyClose(rabbitCloseError)
Если будут вопросы, пишите комментарии к ответу.
P.S. Также я бы рекомендовал не блокировать программу "бесконечным" каналом, а хотя бы
использовать сигналы ОС (даже под виндой).