반응형
해당 글에서는 Spring 환경에서 RabbitMQ를 사용하기 위한 org.springframework.amqp.core 패키지 내에 포함되어 있는 MessageProperties 내의 메서드에 대해 확인합니다.
💡 [참고] 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) MessageProperties
💡 MessageProperties
- AMQP 메시지의 모든 속성을 포함합니다. 이 클래스는 각 메시지에 대한 메타데이터를 제공하며, 이 메타데이터에는 메시지 ID, 타임스탬프, 메시지 타입, 우선 순위, 만료 시간 등이 포함될 수 있습니다. 또한, 사용자 정의 헤더를 포함할 수 있습니다.
- 이 클래스는 메시지를 생성하고 조작하는데 사용됩니다.
메서드 | 리턴 타입 | 분류 | 설명 |
getAppId() | String | 속성 조회 | 메시지의 애플리케이션 ID를 가져옴 |
getClusterId() | String | 속성 조회 | 메시지의 클러스터 ID를 가져옴 |
getConsumerQueue() | String | 속성 조회 | 메시지를 소비한 큐의 이름을 가져옴 |
getConsumerTag() | String | 속성 조회 | 메시지를 소비한 소비자의 태그를 가져옴 |
getContentEncoding() | String | 속성 조회 | 메시지의 컨텐츠 인코딩을 가져옴 |
getContentLength() | long | 속성 조회 | 메시지의 컨텐츠 길이를 가져옴 |
getContentType() | String | 속성 조회 | 메시지의 컨텐츠 유형을 가져옴 |
getCorrelationId() | String | 속성 조회 | 메시지의 상관관계 ID를 가져옴 |
getDelayLong() | Long | 속성 조회 | 메시지의 x-delay 헤더의 long 값을 가져옴 |
getDeliveryMode() | MessageDeliveryMode | 속성 조회 | 메시지의 전달 모드를 가져옴 |
getDeliveryTag() | long | 속성 조회 | 메시지의 전달 태그를 가져옴 |
getExpiration() | String | 속성 조회 | 메시지의 만료 시간을 가져옴 |
getHeader(String headerName) | <T> T | 속성 조회 | 메시지의 헤더 중 headerName에 해당하는 값을 가져옴 |
getHeaders() | Map<String,Object> | 속성 조회 | 메시지의 모든 헤더를 가져옴 |
getInferredArgumentType() | Type | 속성 조회 | method-level @RabbitListener를 사용할 때 추론된 대상 인수 유형을 가져옴 |
getMessageCount() | Integer | 속성 조회 | 큐에 남아있는 메시지 수에 대한 서버의 최신 추정치를 반환 |
getMessageId() | String | 속성 조회 | 메시지의 ID를 가져옴 |
getPriority() | Integer | 속성 조회 | 메시지의 우선 순위를 가져옴 |
getPublishSequenceNumber() | long | 속성 조회 | 발행자 확인이 활성화된 경우 발행 순서 번호를 반환 |
getReceivedDelayLong() | Long | 속성 조회 | 지연된 메시지 교환을 사용할 때 받은 메시지의 x-delay 헤더에는 지연이 포함되어 있음 |
getReceivedDeliveryMode() | MessageDeliveryMode | 속성 조회 | 메시지의 수신 전달 모드를 가져옴 |
getReceivedExchange() | String | 속성 조회 | 메시지를 수신한 교환기의 이름을 가져옴 |
getReceivedRoutingKey() | String | 속성 조회 | 메시지를 수신한 라우팅 키를 가져옴 |
getReceivedUserId() | String | 속성 조회 | 들어오는 메시지에서 사용자 ID를 반환 |
getRedelivered() | Boolean | 속성 조회 | 메시지가 재전송되었는지 여부를 반환 |
getReplyTo() | String | 속성 조회 | 메시지의 ReplyTo 속성을 가져옴 |
getReplyToAddress() | Address | 속성 조회 | 메시지의 ReplyTo 주소를 가져옴 |
getTargetBean() | Object | 속성 조회 | @RabbitListener를 사용할 때 대상 빈을 가져옴 |
getTargetMethod() | Method | 속성 조회 | @RabbitListener를 사용할 때 대상 메소드를 가져옴 |
getTimestamp() | Date | 속성 조회 | 메시지의 타임스탬프를 가져옴 |
getType() | String | 속성 조회 | 메시지의 타입을 가져옴 |
getUserId() | String | 속성 조회 | 메시지의 사용자 ID를 가져옴 |
getXDeathHeader() | List<Map<String,?>> | 속성 조회 | 메시지의 x-death 헤더를 반환 |
isContentLengthSet() | protected final boolean | 속성 조회 | 컨텐츠 길이가 설정되었는지 확인 |
isDeliveryTagSet() | protected final boolean | 속성 조회 | 전달 태그가 설정되었는지 확인 |
isFinalRetryForMessageWithNoId() | boolean | 속성 조회 | ID 없는 메시지에 대한 최종 재시도인지 확인 |
isLastInBatch() | boolean | 속성 조회 | 이 메시지가 배치에서 마지막 메시지인지 확인 |
isProjectionUsed() | boolean | 속성 조회 | 변환에 프로젝션을 사용했는지 확인하는 내부 플래그 |
isRedelivered() | Boolean | 속성 조회 | 메시지가 재전달되었는지 확인 |
equals(Object obj) | boolean | 속성 비교 | 주어진 객체가 이 MessageProperties와 동일한지 확인 |
hashCode() | int | 코드 반환 | 메시지의 해시 코드를 반환 |
// [STEP1] MessageProperties 인스턴스 구성
MessageProperties mpb = MessagePropertiesBuilder.newInstance()
.setHeader("x-max-priority", 255)
.setPriority(255)
.build();
System.out.println("MessageProperties Expiration :: " + mpb.getExpiration());
System.out.println("MessageProperties Priority :: " + mpb.getPriority());
System.out.println("MessageProperties Priority :: " + mpb.getHeaders());
2) MessagePropertiesBuilder
💡 MessagePropertiesBuilder
- MessageProperties의 인스턴스를 생성하는 데 사용됩니다.
- 빌더 패턴을 따르며, 이를 통해 메시지 속성을 쉽게 설정하고 변경할 수 있습니다.
- 메시지 ID, 타임스탬프, 메시지 타입, 우선 순위, 만료 시간 등의 속성을 설정하는 메소드를 제공합니다. 또한, 사용자 정의 헤더를 추가하는 기능도 제공합니다.
메서드 | 리턴 타입 | 설명 |
build() | MessageProperties | MessageProperties 인스턴스를 생성합니다. |
copyProperties(MessageProperties properties) | MessagePropertiesBuilder | 주어진 MessageProperties의 속성을 복사합니다. |
fromClonedProperties(MessageProperties properties) | static MessagePropertiesBuilder | 주어진 MessageProperties의 속성을 얕은 복사하여 새로운 MessagePropertiesBuilder를 생성합니다. |
fromProperties(MessageProperties properties) | static MessagePropertiesBuilder | 제공된 MessageProperties의 속성으로 MessagePropertiesBuilder를 초기화하며, 동일한 객체가 build()에 의해 반환됩니다. |
newInstance() | static MessagePropertiesBuilder | 초기 속성 세트가 있는 새로운 MessagePropertiesBuilder 인스턴스를 반환합니다. |
3) MessageBuilderSupport
💡 MessageBuilderSupport
- AMQP 메시지 빌더를 지원하는 클래스입니다. 메시지 빌더의 기본 클래스로 사용되며, 메시지 생성에 필요한 다양한 설정 옵션이 포함되어 있습니다. 또한, 메시지 속성을 설정하거나 변경하는 메소드를 제공합니다.
메서드 | 리턴 타입 | 분류 | 설명 |
build() | abstract T | 빌드 구성 | 빌드 과정을 수행하는 메소드 |
buildProperties() | protected MessageProperties | 빌드 구성 | 메시지 프로퍼티를 빌드하는 메소드 |
copyHeaders(Map<String, Object> headers) | MessageBuilderSupport<T> | 헤더 복사 | 헤더를 복사하는 메소드 |
copyHeadersIfAbsent(Map<String, Object> headers) | MessageBuilderSupport<T> | 헤더 복사 | 헤더가 없는 경우에 복사하는 메소드 |
copyProperties(MessageProperties properties) | MessageBuilderSupport<T> | 속성 복사 | 프로퍼티를 복사하는 메소드 |
removeHeader(String key) | MessageBuilderSupport<T> | 속성 제거 | 주어진 키의 헤더를 제거하는 메소드 |
removeHeaders() | MessageBuilderSupport<T> | 속성 제거 | 모든 헤더를 제거하는 메소드 |
setAppId(String appId) | MessageBuilderSupport<T> | 속성 설정 | 앱 ID를 설정하는 메소드 |
setAppIdIfAbsent(String appId) | MessageBuilderSupport<T> | 속성 설정 | 앱 ID가 없는 경우에 설정하는 메소드 |
setClusterId(String clusterId) | MessageBuilderSupport<T> | 속성 설정 | 클러스터 ID를 설정하는 메소드 |
setClusterIdIfAbsent(String clusterId) | MessageBuilderSupport<T> | 속성 설정 | 클러스터 ID가 없는 경우에 설정하는 메소드 |
setContentEncoding(String contentEncoding) | MessageBuilderSupport<T> | 속성 설정 | 콘텐츠 인코딩을 설정하는 메소드 |
setContentEncodingIfAbsent(String contentEncoding) | MessageBuilderSupport<T> | 속성 설정 | 콘텐츠 인코딩이 없는 경우에 설정하는 메소드 |
setContentLength(long contentLength) | MessageBuilderSupport<T> | 속성 설정 | 콘텐츠 길이를 설정하는 메소드 |
setContentLengthIfAbsent(long contentLength) | MessageBuilderSupport<T> | 속성 설정 | 콘텐츠 길이가 없는 경우에 설정하는 메소드 |
setContentType(String contentType) | MessageBuilderSupport<T> | 속성 설정 | 콘텐츠 타입을 설정하는 메소드 |
setContentTypeIfAbsentOrDefault(String contentType) | MessageBuilderSupport<T> | 속성 설정 | 콘텐츠 타입이 없는 경우에 기본값으로 설정하는 메소드 |
setCorrelationId(String correlationId) | MessageBuilderSupport<T> | 속성 설정 | 상관관계 ID를 설정하는 메소드 |
setCorrelationIdIfAbsent(String correlationId) | MessageBuilderSupport<T> | 속성 설정 | 상관관계 ID가 없는 경우에 설정하는 메소드 |
setDeliveryMode(MessageDeliveryMode deliveryMode) | MessageBuilderSupport<T> | 속성 설정 | 배송 방식을 설정하는 메소드 |
setDeliveryModeIfAbsentOrDefault(MessageDeliveryMode deliveryMode) | MessageBuilderSupport<T> | 속성 설정 | 배송 방식이 없는 경우에 기본값으로 설정하는 메소드 |
setDeliveryTag(Long deliveryTag) | MessageBuilderSupport<T> | 속성 설정 | 배송 태그를 설정하는 메소드 |
setDeliveryTagIfAbsent(Long deliveryTag) | MessageBuilderSupport<T> | 속성 설정 | 배송 태그가 없는 경우에 설정하는 메소드 |
setExpiration(String expiration) | MessageBuilderSupport<T> | 속성 설정 | 만료 시간을 설정하는 메소드 |
setExpirationIfAbsent(String expiration) | MessageBuilderSupport<T> | 속성 설정 | 만료 시간이 없는 경우에 설정하는 메소드 |
setHeader(String key, Object value) | MessageBuilderSupport<T> | 속성 설정 | 헤더를 설정하는 메소드 |
setHeaderIfAbsent(String key, Object value) | MessageBuilderSupport<T> | 속성 설정 | 헤더가 없는 경우에 설정하는 메소드 |
setMessageCount(Integer messageCount) | MessageBuilderSupport<T> | 속성 설정 | 메시지 수를 설정하는 메소드 |
setMessageCountIfAbsent(Integer messageCount) | MessageBuilderSupport<T> | 속성 설정 | 메시지 수가 없는 경우에 설정하는 메소드 |
setMessageId(String messageId) | MessageBuilderSupport<T> | 속성 설정 | 메시지 ID를 설정하는 메소드 |
setMessageIdIfAbsent(String messageId) | MessageBuilderSupport<T> | 속성 설정 | 메시지 ID가 없는 경우에 설정하는 메소드 |
setPriority(Integer priority) | MessageBuilderSupport<T> | 속성 설정 | 우선순위를 설정하는 메소드 |
setPriorityIfAbsentOrDefault(Integer priority) | MessageBuilderSupport<T> | 속성 설정 | 우선순위가 없는 경우에 기본값으로 설정하는 메소드 |
setProperties(MessageProperties properties) | protected void | 속성 설정 | 프로퍼티를 설정하는 메소드 |
setReceivedExchange(String receivedExchange) | MessageBuilderSupport<T> | 속성 설정 | 받은 교환을 설정하는 메소드 |
// [STEP1] MessageProperties 인스턴스 구성
MessageProperties mpb = MessagePropertiesBuilder.newInstance()
.setHeader("x-max-priority", 255)
.setPriority(255)
.build();
오늘도 감사합니다. 😀
반응형