I started doing this but soon got frustrated that I really was just shoveling the same logic back and forth. The thing is that the current code gets its defaults from RabbitMQ's ConnectionFactory class to some extent and I thought it was a bit icky to have the ConsumerConfig class create a different ConnectionFactory instance just to get the defaults that they're using. Then I started to go "all the way" and instead of making it a "ConsumerConfig" it was actually a Factory of sorts but as I said, felt I was just moving stuff from one place to another and in addition adding a new class that didn't really serve that much purpose.

Maybe I just don't see the same solution that you're seeing so I can revisit this if you give me some more concrete examples but at least for now I'm leaving it as is.