交换到交换的绑定
概述
在 AMQP 0-9-1 中,queue.bind 方法将队列绑定到交换机,以便消息(受各种条件限制)从交换机(源)流向队列(目标)。我们引入了一个 exchange.bind 方法,它将一个交换机绑定到另一个交换机。这种绑定在语义上与交换机到队列的绑定相同:单向,绑定键和交换机类型照常工作,但绑定的两个端点(源和目标)都是交换机。这允许创建更丰富的路由拓扑。请注意,exchange.bind 方法中的 source 和 destination 字段反映了消息的流动:从源处的交换机,到目标处的交换机。
就像 queue.bind 一样,可以在相同的绑定端点之间创建多个不同的绑定。我们在消息传递过程中检测并消除循环,并确保通过任何路由拓扑,对于每条消息被路由到的每个队列,每个队列将收到该消息的精确一份副本。声明为 auto-delete 的交换机在移除其所有绑定后仍会被删除,无论这些绑定是与队列还是交换机。请注意,自动删除交换机仅在其作为源的绑定被移除时才会被删除:如果您添加以给定交换机为目标的交换机到交换机的绑定,那么在移除这些绑定时该交换机将不会被自动删除。
Java 客户端示例
使用 Channel#exchangeBind 方法。以下示例使用路由键 "routingKey" 将交换机 "destination" 绑定到 "source"。
Channel ch = conn.createChannel();
ch.exchangeBind("destination", "source", "routingKey");
.NET 客户端示例
使用 IModel#ExchangeBind 方法。以下示例使用路由键 "routingKey" 将交换机 "destination" 绑定到 "source"。
var ch = conn.CreateModel();
ch.ExchangeBind("destination", "source", "routingKey");