so wouldn't it be easier to just write the defaults at the top of the Run() function? I don't think you need to put the rules in the FromAMQP struct at all, as they don't seem to be used anywhere apart from to transmit the defaults from the NewFromAMQP function into Run. This way the block would follow the same pattern as most of the other blocks. 

This is largely a stylistic comment, mind you, so as soon as I can get a Rabbit queue up and running to test with I'll be merging this in.