반응형
해당 글에서는 Spring 환경에서 RabbitMQ를 사용하기 위한 org.springframework.amqp.core 패키지 내에 포함되어 있는 ExchangeBuilder 클래스의 메서드에 대해 확인합니다.
💡 [참고] Spring Boot AMQP RabbitMQ에 대해 궁금하시면 아래의 글을 참고하시면 도움이 됩니다.
분류 | 링크 |
Spring Boot AMQP RabbitMQ -1 : 구조 및 종류 이해하기 | https://adjh54.tistory.com/284 |
Spring Boot AMQP RabbitMQ -2 : 로컬 환경 구성하기 | https://adjh54.tistory.com/285 |
Spring Boot AMQP RabbitMQ -3 : Java 환경 구축 및 간단 예시 | https://adjh54.tistory.com/292 |
Spring Boot AMQP RabbitMQ -4 : Exchange 종류 별 이해 및 사용예시 | https://adjh54.tistory.com/497 |
Spring Boot AMQP RabbitMQ -5 : TTL 및 데드 레터링 사용예시 | https://adjh54.tistory.com/501 |
Docker를 이용하여 RabbitMQ 구축하기 | https://adjh54.tistory.com/496 |
QueueBuilder API Document : 3.2.0 | https://adjh54.tistory.com/505 |
ExchangeBuilder API Document: 3.2.0 | https://adjh54.tistory.com/506 |
BindingBuilder API Document: 3.2.0 | https://adjh54.tistory.com/507 |
MessageProperties, Builder, BuilderSupport API Document | https://adjh54.tistory.com/508 |
Spring Boot AMQP RabbitMQ Github : Event Producer | https://github.com/adjh54ir/blog-codes/tree/main/spring-boot-rabbitmq |
Spring Boot AMQP RabbitMQ Github : Event Consumer | https://github.com/adjh54ir/blog-codes/tree/main/spring-boot-rabbitmq-consumer |
1) ExchangeBuilder
💡 ExchangeBuilder
- Spring AMQP 라이브러리에서 제공하는 클래스로, 메시지 브로커인 RabbitMQ에서 사용하는 다양한 타입의 Exchange를 쉽게 생성할 수 있도록 도와줍니다.
- Exchange는 메시지를 받아서 하나 이상의 큐에 전달하는 역할을 합니다.
- ExchangeBuilder 클래스는 다양한 static 메소드를 제공합니다. 이들 메소드는 각각 다른 타입의 Exchange를 생성하는 데 사용됩니다.
- 예를 들어, ExchangeBuilder.directExchange("myExchange") 메소드는 Direct 타입의 Exchange를 생성하고, ExchangeBuilder.topicExchange("myExchange") 메소드는 Topic 타입의 Exchange를 생성합니다.
- 이 외에도 Fanout, Headers 타입의 Exchange를 생성하는 메소드도 제공합니다. 이렇게 생성된 Exchange 객체는 durable(true), autoDelete(false) 등의 메소드를 통해 추가적인 옵션 설정이 가능합니다.
2) ExchangeBuilder Class Method
💡 ExchangeBuilder Class Method
- 해당 분류 내용은 API를 확인하고 비슷한 내용에 대해 분류하였으니 참고하시면 될 것 같습니다.
메서드 | 리턴 타입 | 분류 | 설명 |
build() | T extends Exchange | Exchange 인스턴스 | Exchange 인스턴스를 반환합니다. |
directExchange(String name) | static ExchangeBuilder | Exchange 종류 | DirectExchange 빌더 반환. |
fanoutExchange(String name) | static ExchangeBuilder | Exchange 종류 | FanoutExchange 빌더 반환. |
topicExchange(String name) | static ExchangeBuilder | Exchange 종류 | TopicExchange 빌더 반환. |
headersExchange(String name) | static ExchangeBuilder | Exchange 종류 | HeadersExchange 빌더 반환. |
withArgument(String key, Object value) | ExchangeBuilder | Exchange 속성 | 인수 추가. |
withArguments(Map<String, Object> arguments) | ExchangeBuilder | Exchange 속성 | 인수 추가. |
alternate(String exchange) | ExchangeBuilder | Exchange 속성 | 대체 교환을 지정합니다. |
admins(Object... admins) | ExchangeBuilder | Exchange 속성 | 이 교환을 선언해야 할 관리자 인스턴스 또는 관리자 빈 이름. |
autoDelete() | ExchangeBuilder | Exchange 속성 | 자동 삭제 플래그 설정. |
delayed() | ExchangeBuilder | Exchange 속성 | 지연 플래그 설정. |
durable(boolean isDurable) | ExchangeBuilder | Exchange 속성 | 지속성 플래그 설정. |
ignoreDeclarationExceptions() | ExchangeBuilder | Exchange 속성 | 선언 시 속성 불일치 등의 예외를 무시하도록 전환. |
internal() | ExchangeBuilder | Exchange 속성 | 내부 플래그 설정. |
suppressDeclaration() | ExchangeBuilder | Exchange 속성 | 어떤 관리자에 의한 교환 선언을 비활성화 하도록 전환. |
3) ExchangeBuilder 사용예시
💡 ExchangeBuilder 사용예시
- Exchange 종류 중 Direct Exchange를 이용하여 구성합니다.
- 다양한 속성은 아래와 같은 형태로 구성합니다.
/**
* Direct Exchange 구성
*
* @return
*/
@Bean
DirectExchange directExchange() {
// direct.exchange 이름의 Direct Exchange 구성
return ExchangeBuilder
// 1. Direct Exchange 설정 및 이름 설정
.directExchange("exchange.direct")
// 2. Exchange 지속성 설정
.durable(true)
// 3. 자동 삭제 여부 설정
.autoDelete()
// 4. 관리자 설정
.admins("admin1", "admin2")
// 5. Exchange 속성 설정
.withArgument("key", "value")
// 6. 지연 설정
.delayed()
// 7. 선언 시 속성 불일치 등 예외 무시
.ignoreDeclarationExceptions()
.build();
}
오늘도 감사합니다. 😀
반응형