[RabbitMQ] RabbitMQ Structure 생성하기

반응형

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

0. RabbitMQ Structure란?

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

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

rabbitmq management console

image.png

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

image.png

Queue

image.png

Binding

image.png


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


추천서적

 

RabbitMQ 따라잡기:AMQP 기반의 오픈소스 메시지 브로커

COUPANG

www.coupang.com

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음


반응형

댓글

Designed by JB FACTORY