1. If you want some form of dynamic sender, then don't subclass RabbitGatewaySupport, use your own support class that supports multiple RabbitTemplates.
2. You need a separate listener container for each connection factory.
You could define your factory and listener container in its own config file; use property placeholders for the configurable details; instantiate the context and make the main context the parent context; that enables each child to reference beans in the main context. You can pass in properties for the placeholders using the Spring 3.1 environment support...
Code:
ConfigurableApplicationContext ctx = new ClassPathXmlApplicationContext(
new String[] { "/META-INF/spring/integration/configurable-listener-context.xml" },
false,
mainContext);
StandardEnvironment env = new StandardEnvironment();
Properties props = new Properties();
props.setProperty("foo", "bar");
...
PropertiesPropertySource pps = new PropertiesPropertySource("ftpprops", props);
env.getPropertySources().addLast(pps);
ctx.setEnvironment(env);
ctx.refresh();