一、binding绑定
在上一节中我们已经见过绑定的例子了:
channel.queueBind(queueName,EXCHANGE_NAME,"");
绑定的作用是将特定队列链接到特定交换机上,可以简单地理解为:这个队列对该交换机的消息感兴趣。
绑定可以携带一个额外的routingKey(或bindingKey)参数,即queueBind的最后一个“”参数:
channel.queueBind(queueName,EXCHANGE_NAME,"blank");
绑定键的意义取决于交换机类型,在fanout类型中,绑定键的值会被忽略。
二、Direct Exchange 直连交换机
fanout交换机只是盲目地将接受到的消息广播到所有绑定的队列,如果想要做分流处理,即按照消息的特征将消息发送到特定的绑定队列,那么就需要使用direct交换机。其中,特征就是指routingKey(bindingKey)。
如下图所示,路由键orange绑定到了Q1,而black、green绑定到了Q2.这样,消息中路由键为orange的消息将会被路由到Q1,带有black和green的将会被路由到Q2.