With RabbitMQ (AMQP) you don't send to queues, you send to exchanges with a routing key, and bindings determine which queue(s) get the message.
<rabbit:direct-exchange name="si.test.exchange">
<rabbit:bindings>
<rabbit:binding queue="si_test_queue" key="si.test.binding" />
</rabbit:bindings>
</rabbit:direct-exchange>
<int-amqp:outbound-channel-adapter
channel="toRabbit" amqp-template="amqpTemplate" exchange-name="si.test.exchange"
routing-key="si.test.binding" />
Instead of routing-key
you can use routing-key-expression
with something like headers['foo']
or @someBean.determineRoutingKeyFor(payload)
.