RabbitMQ est construit sur AMQP 0.9. Il implémente la notion de binding conformément à cette spécification.
Un binding est un lien entre un exchange et une queue. Il peut éventuellement relier un exchange avec un autre exchange .
Définition
"bindings": [
{
"source": "x.activity",
"destination": "q.activity.ride",
"destination_type": "queue",
"routing_key": "ride",
"vhost": "/jtips",
"arguments": {}
}
]
Client Java
public void bindQueueToExchange() {
...
channel.queueBind(
"q.activity.ride", // queue (destination)
"x.activity", // exchange (source)
"ride" // routing key
);
}
Spring AMQP
@Bean
public class MessageService {
private final AmqpAdmin admin;
public void bindQueueToExchange(Queue queue, Exchange exchange) {
String key = ...;
admin.declareBinding(
BindingBuilder.bind(queue).to(exchange).with(key).noargs());
}
// ou
public void bindQueueToExchange(String queueName, String exchangeName, String routingKey) {
admin.declareBinding(
new Binding(queueName, DestinationType.QUEUE, exchangeName, routingKey, Map.of());
}
}
Références