I think this has nothing to do with Spring Cloud Stream.
According that RabbitMQ docs, we just can do on the client side:
Map<String, Object> args = new HashMap<String, Object>();
args.put("alternate-exchange", "my-ae");
channel.exchangeDeclare("my-direct", "direct", false, false, args);
channel.exchangeDeclare("my-ae", "fanout");
channel.queueDeclare("routed");
channel.queueBind("routed", "my-direct", "key1");
channel.queueDeclare("unrouted");
channel.queueBind("unrouted", "my-ae", "");
So, technically you just declare respective beans according Spring AMQP API: https://docs.spring.io/spring-amqp/docs/current/reference/html/#broker-configuration
Or as that docs points out: use policies on the broker to modify an exchange for this alternate-exchange feature.
If you still see a value in some high-level API for this, feel free to raise a GH issue against Spring AMQP project: https://github.com/spring-projects/spring-amqp/issues.
Or in Spring Cloud Stream if you find existing Spring AMQP capabilities as enough, but still think that Spring Cloud Stream destination provisioner could be improved with some extra properties: https://github.com/spring-cloud/spring-cloud-stream