routingkey 和 bindingkey
routingkey:producer 发布message 通过basicPublish方法,其中有一个exchange 参数用来指定发送到哪个exchange,一个参数routingkey,用来指定exchange接收到message后,发送给哪个binding在此exchange的queues (queue binding到exchange有个bindingkey 是否与routingkey match),
bindingkey:用来绑定exchange与queues,其中有个一参数bindingkey,用来判断是否bindingkey与routingkey match,match的话,发送到对应的queue。
通过routingkey是否与bindingkey match,来filter message,dispatch message给不同的queues,从而对应不用consumer,也可以用来discard 不match的message。
channel.queueBind(queueName, EXCHANGE_NAME, "black");
black字符就是bindingkey,也叫routingkey
鉴于fanout type的exchange 会忽略routingkey,一般routingkey与direct type exchange一起用。
注意:一个queue,可以通过多个不同的bindingkeys绑定到同一个exchange,这样,发布message的routingkey,满足匹配任一bindingkeys,都会route到此queue。
String queueName = channel.queueDeclare().getQueue();
for(String severity : argv){
channel.queueBind(queueName, EXCHANGE_NAME, severity);
}
详情及example参照:http://www.rabbitmq.com/tutorials/tutorial-four-java.html、