win*_*ter 11 rabbitmq spring-amqp spring-boot rabbitmq-exchange spring-rabbitmq
从春季启动教程:https: //spring.io/guides/gs/messaging-rabbitmq/
他们给出了仅创建1个队列和1个队列的示例,但是,如果我希望能够创建多于1个队列,该怎么办?怎么可能?
显然,我不能只创建两次相同的bean:
@Bean
Queue queue() {
return new Queue(queueNameAAA, false);
}
@Bean
Queue queue() {
return new Queue(queueNameBBB, false);
}
Run Code Online (Sandbox Code Playgroud)
你不能两次创建相同的bean,它会使模糊不清.
Gar*_*ell 17
给bean定义工厂方法的名称不同.通常,按照惯例,您可以将它们命名为与队列相同,但这不是必需的......
@Bean
Queue queue1() {
return new Queue(queueNameAAA, false);
}
@Bean
Queue queue2() {
return new Queue(queueNameBBB, false);
}
Run Code Online (Sandbox Code Playgroud)
方法名称是bean名称.
编辑
在绑定bean中使用队列时,有两个选项:
@Bean
Binding binding1(@Qualifier("queue1") Queue queue, TopicExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with(queueNameAAA);
}
@Bean
Binding binding2(@Qualifier("queue2") Queue queue, TopicExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with(queueNameBBB);
}
Run Code Online (Sandbox Code Playgroud)
要么
@Bean
Binding binding1(TopicExchange exchange) {
return BindingBuilder.bind(queue1()).to(exchange).with(queueNameAAA);
}
@Bean
Binding binding2(TopicExchange exchange) {
return BindingBuilder.bind(queue2()).to(exchange).with(queueNameBBB);
}
Run Code Online (Sandbox Code Playgroud)
甚至更好......
@Bean
Binding binding1(TopicExchange exchange) {
return BindingBuilder.bind(queue1()).to(exchange).with(queue1().getName());
}
@Bean
Binding binding2(TopicExchange exchange) {
return BindingBuilder.bind(queue2()).to(exchange).with(queue2().getName());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6169 次 |
| 最近记录: |