Bindings dans RabbitMQ

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