Я пытаюсь понять этот код, который является конфигурацией RabbitMQ.
@Configuration
public class RabbitMqConfig {// rabbitmq配置类
public static final String EXCHANGE = "com.mldn.fish.exchange";// 配置交换空间
public static final String ROUTINGKEY = "com.mldn.fish.routingkey";// 创建一个路由
public static final String QUEUE_NAME = "com.mldn.fish.queue";// 创建队列名字
@Bean
public DirectExchange getDirectExchange() {
return new DirectExchange(RabbitMqConfig.EXCHANGE);// 得到交换空间
}
@Bean
public Queue getQueue() {
return new Queue(RabbitMqConfig.QUEUE_NAME);// 得到队列名字
}
@Bean
public Binding bindingExchangeQueue(DirectExchange exchange, Queue queue) {
return BindingBuilder.bind(queue).to(exchange).with(RabbitMqConfig.ROUTINGKEY);// 绑定交换空间和队列
}
}
Здесь, что означают параметры метода "bindingExchangeQueue"?Должно ли это быть -
@Bean
public Binding bindingExchangeQueue(DirectExchange getDirectExchange, Queue getQueue) {
return BindingBuilder.bind(getQueue).to(getDirectExchange).with(RabbitMqConfig.ROUTINGKEY);// 绑定交换空间和队列
}
В основном я хочу знать, что несут эти параметры, и должно ли имя совпадать с именем метода, настроенным как @Beans.Может кто-нибудь объяснить это, пожалуйста?
Я также нашел пример, где настроено несколько очередей.Пожалуйста, найдите ниже -
@Bean
Queue queueFoo() {
return new Queue("queue.foo", false);
}
@Bean
Queue queueBar() {
return new Queue("queue.bar", false);
}
@Bean
TopicExchange exchange() {
return new TopicExchange("exchange");
}
@Bean
Binding bindingExchangeFoo(Queue queueFoo, TopicExchange exchange) {
return BindingBuilder.bind(queueFoo).to(exchange).with("queue.foo");
}
@Bean
Binding bindingExchangeBar(Queue queueBar, TopicExchange exchange) {
return BindingBuilder.bind(queueBar).to(exchange).with("queue.bar");
}
Здесь, привязка bean-компонентаExchangeFoo имеет имя параметра Queue как queueFoo, которое соответствует @Bean queueFoo.В противном случае, поскольку теперь существует 2 очереди, как он узнает, какую очередь связывать, основываясь только на типе возврата?