为什么不能一次性为一个direct交换机绑定多个路由key?
在springboot项目中rabbitmq的配置文件中定义绑定交换机和队列的Bean:
(1)第一种方法
@Bean(name = "binding")
public Binding getBinding(@Qualifier("directExchange") DirectExchange directExchange,@Qualifier("queue") Queue queue){
return BindingBuilder.bind(queue).to(directExchange).with("a");
}
上述代码可以为direct交换机绑定一个路由key到队列,在rabbitmq管理面板上可以看得到。
(2)第二种方法
@Bean(name = "binding")
public List<Binding> getBinding05(@Qualifier("directExchange") DirectExchange directExchange, @Qualifier("queue") Queue queue){
List<Binding> bindings = new LinkedList<>();
String[] routingKeys = {"a","b"};
for (String routingKey : routingKeys){
Binding binding = BindingBuilder.bind(queue).to(directExchange).with(routingKey);
bindings.add(binding);
}
return bindings;
}
这种方法返回了一个Binding的集合,方法内部用String数组记录了多个路由key,并且通过循环来多次绑定不同的key。
理论上来说应该是行得通的,队列和direct交换机之间应该是有两个key绑定的。但是实际上这种绑定不奏效,在rabbitmq管理面板上没有这两个绑定。
为什么不能一次性为一个direct交换机绑定多个路由key呢?
BindingBuilder的with方法可以一次性接收多个路由key吗,比如
BindingBuilder.bind(queue).to(directExchange).with(key1,key2,key3)
请各位帮我解决疑惑。<抱拳>