[RabbitMQ] RabbitMQ Structure 생성하기

2021. 11. 3. 11:28 Spring Cloud/RabbitMQ

이번 글에서는 Java Code로 RabbitMQ Structure를 생성해보겠습니다.

0. RabbitMQ Structure란?

Exchange, Queue, Binding 등의 RabbitMQ Server의 구조를 의미합니다.

rabbitmq의 structure는 rabbitmq managemenet console에서 GUI를 통해 생성할 수도 있지만, Java code 내부에서도 생성해 사용할 수 있습니다.

rabbitmq management console

 

 

1. @Configuration

Java Code로 RabbitMQ Structure를 생성하기 위해선 config 파일을 생성해야 합니다.

아래와 같이 @Configuration 어노테이션을 선언한 config 파일을 생성합니다.

@Configuration
public class RabbitmqSchemaConfig {

    @Bean
    public FanoutExchange createFanoutExchange() {
        return new FanoutExchange("x.another-dummy", true, false, null);
    }

    @Bean
    public Queue createQueue() {
        return new Queue("q.another-dummy");
    }

    @Bean
    public Binding createBinding() {
        //return new Binding("q.another-dummy", DestinationType.QUEUE, "x.another-dummy", "", null);
        return BindingBuilder.bind(createQueue()).to(createFanoutExchange());
    }

//    @Bean
//    public Declarables createRabbitmqSchema() {
//        return new Declarables(new FanoutExchange("x.another-dummy", true, false, null), new Queue("q.another-dummy"),
//                new Binding("q.another-dummy", DestinationType.QUEUE, "x.another-dummy", "", null));
//    }

}

위처럼 작성하면, 어플리케이션이 실행될때 위의 @Configuration에서 @Bean으로 선언한 Container들을 반환해 사용합니다.

위의 소스 내용을 해석하면 아래와 같습니다.

  1. "x.another-dummy" fanout exchange를 생성합니다.
  2. "q.another-dummy" queue를 생성합니다.
  3. "x.another-dummy"와 "q.another-dummy"를 binding 시켜줍니다.

어플리케이션을 실행하면 아래와 같이 exchange와 queue가 자동으로 생성되었으며, binding까지 되어있는 것을 확인할 수 있습니다.

Exchange

Queue

Binding


참고 자료 : https://www.udemy.com/course/rabbitmq-java-spring-boot-for-system-integration/

출처 : https://minholee93.tistory.com/entry/RabbitMQ-RabbitMQ-Structure-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0