source

스프링 부트가 있는 여러 Rabbitmq 대기열

manysource 2023. 7. 9. 11:17

스프링 부트가 있는 여러 Rabbitmq 대기열

봄부터 부팅 튜토리얼: https://spring.io/guides/gs/messaging-rabbitmq/

예를 들어 대기열 하나와 대기열 하나만 생성할 수 있습니다. 그러나 대기열을 하나 이상 생성하려면 어떻게 해야 합니까?그것이 어떻게 가능할까요?

분명히, 저는 같은 콩을 두 번만 만들 수 없습니다.

@Bean
Queue queue() {
    return new Queue(queueNameAAA, false);
}

@Bean
Queue queue() {
    return new Queue(queueNameBBB, false);
}

같은 콩을 두 번 만들 수는 없습니다. 그것은 모호하게 만들 것입니다.

콩 정의 공장 방법에 다른 이름을 지정합니다.일반적으로 대기열과 같은 이름을 지정합니다. 하지만 그럴 필요는 없습니다.

@Bean
Queue queue1() {
    return new Queue(queueNameAAA, false);
}

@Bean
Queue queue2() {
    return new Queue(queueNameBBB, false); 
}

메서드 이름은 콩 이름입니다.

편집

바인딩 빈의 큐를 사용할 때는 두 가지 옵션이 있습니다.

@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);
}

또는

@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);
}

아니면 더 나은...

@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());
}

언급URL : https://stackoverflow.com/questions/41210688/multiple-rabbitmq-queues-with-spring-boot