- Spring AMQP 프레임워크에서 제공하는 클래스로, AMQP 메시지 큐를 쉽게 생성할 수 있게 도와줍니다. 이 클래스의 메서드를 사용하면 필요에 따라 다양한 속성을 가진 메시지 큐를 만들 수 있습니다. - 예를 들어, durable, exclusive, autoDelete 등의 메서드를 사용하여 메시지 큐의 지속성, 독점성, 자동 삭제 등의 속성을 설정할 수 있습니다.
- 해당 분류 내용은 API를 확인하고 비슷한 내용에 대해 분류하였으니 참고하시면 될 것 같습니다.
메서드
리턴 타입
분류
설명
build()
Queue
Queue 속성 설정
최종 큐를 생성합니다.
withArgument(String key, Object value)
QueueBuilder
Queue 속성 설정
최종 큐는 큐를 선언하는 데 사용되는 인수를 포함합니다.
withArguments(Map<String,Object> arguments)
QueueBuilder
Queue 속성 설정
최종 큐는 큐를 선언하는 데 사용되는 인수를 포함합니다.
autoDelete()
QueueBuilder
Queue 속성 설정
최종 큐는 자동으로 삭제됩니다.
deadLetterExchange(String dlx)
QueueBuilder
Queue 속성 설정
만료 또는 거부된 메시지를 라우팅할 dead-letter exchange를 설정합니다.
deadLetterRoutingKey(String dlrk)
QueueBuilder
Queue 속성 설정
만료 또는 거부된 메시지를 dead-letter exchange로 라우팅할 때 사용할 라우팅 키를 설정합니다.
ttl(int ttl)
QueueBuilder
Queue 속성 설정
설정된 경우 메시지가 삭제되거나 dead-letter-exchange로 라우팅될 수 있는 메시지의 생존 시간을 설정합니다.
maxLength(int count)
QueueBuilder
Queue 속성 설정
maxLength(long)을 위해 사용 중단.
maxLength(long count)
QueueBuilder
Queue 속성 설정
큐가 메시지를 삭제하기 시작하기 전에 큐에서 허용하는 (준비된) 메시지의 수를 설정합니다.
maxLengthBytes(int bytes)
QueueBuilder
Queue 속성 설정
큐가 메시지를 삭제하기 시작하기 전에 큐에서 허용하는 총 메시지 바디 크기를 설정합니다.
maxPriority(int maxPriority)
QueueBuilder
Queue 속성 설정
큐가 지원할 우선 순위 수의 최대값을 설정합니다; 설정하지 않으면, 큐는 메시지 우선 순위를 지원하지 않습니다.
expires(int expires)
QueueBuilder
Queue 속성 설정
큐가 삭제되기 전에 사용되지 않을 수 있는 시간을 설정합니다.
durable()
static QueueBuilder
Queue 속성 설정
생성된 고유한 이름을 가진 내구성 있는 큐를 위한 빌더를 생성합니다
durable(String name)
static QueueBuilder
Queue 속성 설정
내구성 있는 큐를 위한 빌더를 생성합니다.
nonDurable()
static QueueBuilder
Queue 속성 설정
비내구성 (일시적) 큐를 위한 빌더를 생성합니다.
nonDurable(String name)
static QueueBuilder
Queue 속성 설정
비내구성 (일시적) 큐를 위한 빌더를 생성합니다.
exclusive()
QueueBuilder
Queue 속성 설정
최종 큐는 독점적이 됩니다.
lazy()
QueueBuilder
Queue 속성 설정
브로커에서 RAM 사용량을 줄이기 위해 가능한 한 많은 메시지를 디스크에 유지하는 lazy 모드로 큐를 설정합니다.
leaderLocator(QueueBuilder.LeaderLocator locator)
QueueBuilder
Queue 속성 설정
노드 클러스터에 큐 마스터가 위치할 노드를 결정하는 마스터 로케이터 모드를 설정합니다.
singleActiveConsumer()
QueueBuilder
Queue 속성 설정
'x-single-active-consumer' 큐 인수를 설정합니다.
overflow(QueueBuilder.Overflow overflow)
QueueBuilder
Queue 속성 설정
최대 메시지 수 또는 최대 메시지 크기가 초과되어 메시지가 삭제될 때의 오버플로 모드를 설정합니다.
quorum()
QueueBuilder
Quorum Queue 속성 설정
'classic' 대신 'quorum' 유형의 큐를 선언하기 위해 큐 인수를 설정합니다.
deliveryLimit(int limit)
QueueBuilder
Quorum Queue 속성 설정
배송 제한을 설정합니다; quorum 대기열에만 적용됩니다.
stream()
QueueBuilder
Stream Queue 속성 설정
'classic' 대신 'stream' 유형의 큐를 선언하기 위해 큐 인수를 설정합니다.
3) Queue 사용예시
💡 Queue 사용예시
- classicQueue에서는 제공되는 메서드를 이용한 방식이며, classicQueue2에서는 withArgument() 메서드의 키 속성을 이용한 방식을 사용한 예시입니다.
@Configuration
public class RabbitMqQueueExConfig {
/**
* Queue 구성 : 일반적인 클래식 큐로 구성
* TTL, 우선순위, 데드레터 익스체인지, 데드레터 라우트 키, 최대 길이 지정
*
* @return
*/
@Bean
public Queue classicQueue1() {
return QueueBuilder
// 1. 큐 유지 여부 설정
.durable("classicQueue1")
// 1. 메시지의 Expiration 지정(TTL : 1초)
.ttl(1000)
// 2. 큐 우선순위 지정
.maxPriority(2)
// 3. 데드 레터 익스체인지 지정
.deadLetterExchange("deadLetterExchange")
// 4. 데드 레터 라우터 지정
.deadLetterRoutingKey("deadLetter")
// 5. Queue의 길이 지정
.maxLength(100)
.build();
}
/**
* Queue 구성 : 일반적인 클래식 큐로 구성
* TTL, 우선순위, 데드레터 익스체인지, 데드레터 라우트 키, 최대 길이 지정
*
* @return
*/
@Bean
public Queue classicQueue2() {
return QueueBuilder
// 1. 큐 유지 여부 설정
.durable("classicQueue2")
// 1. 메시지의 Expiration 지정(TTL : 1초)
.withArgument(ConstQueueAttr.QUEUE_TTL, 1000) // or .ttl()
// 2. 큐 우선순위 지정
.withArgument(ConstQueueAttr.QUEUE_PRIORITY, 2) // or .maxPriority()
// 3. 데드 레터 익스체인지 지정
.withArgument(ConstQueueAttr.QUEUE_DEAD_LETTER_EXCHANGE, "deadLetterExchange") // or .deadLetterExchange()
// 4. 데드 레터 라우터 지정
.withArgument(ConstQueueAttr.QUEUE_DEAD_LETTER_ROUTE_KEY, "deadLetter") // or .deadLetterRoutingKey()
// 5. Queue의 길이 지정
.withArgument(ConstQueueAttr.QUEUE_MAX_LENGTH, 100) // or .maxLength()
.build();
}
}
4) 참고 속성 값
💡 참고 속성 값
- withArgument() 메서드와 함께 사용될 때 ‘키’에 값에 해당하는 속성들에 대해 알아봅니다.
키 속성
설명
x-message-ttl
메시지의 생존 시간을 설정합니다. 설정된 시간 후에 메시지는 삭제되거나 dead-letter-exchange로 라우팅됩니다.
x-max-priority
큐가 지원할 메시지의 우선 순위 수의 최대값을 설정합니다. 설정되지 않으면, 큐는 메시지 우선 순위를 지원하지 않습니다.
x-max-length
큐에서 허용하는 (준비된) 메시지의 수를 설정합니다. 이 수를 초과하면 큐는 메시지를 삭제하기 시작합니다.
x-dead-letter-exchange
만료 또는 거부된 메시지를 라우팅할 dead-letter exchange를 설정합니다.
x-dead-letter-routing-key
만료 또는 거부된 메시지를 dead-letter exchange로 라우팅할 때 사용할 라우팅 키를 설정합니다.
x-single-active-consumer
'x-single-active-consumer' 큐 인수를 설정합니다. 이는 한 번에 하나의 소비자만 큐에서 메시지를 소비하도록 합니다.
x-expires
큐가 삭제되기 전에 사용되지 않을 수 있는 시간을 설정합니다.
x-overflow
최대 메시지 수 또는 최대 메시지 크기가 초과되어 메시지가 삭제될 때의 오버플로 모드를 설정합니다.
x-queue-type
'classic', 'quorum', 'stream' 중 하나의 큐 유형을 선언하기 위해 큐 인수를 설정합니다.
x-max-length-bytes
큐에서 허용하는 총 메시지 바디 크기를 설정합니다. 이 크기를 초과하면 큐는 메시지를 삭제하기 시작합니다.
x-lazy
브로커에서 RAM 사용량을 줄이기 위해 가능한 한 많은 메시지를 디스크에 유지하는 lazy 모드로 큐를 설정합니다.
x-queue-master-locator
노드 클러스터에 큐 마스터가 위치할 노드를 결정하는 마스터 로케이터 모드를 설정합니다.
/**
* 큐의 속성 키 값을 관리하는 상수 클래스입니다.
*
* @author : lee
* @fileName : ConstQueueAttr
* @since : 24. 6. 10.
*/
public class ConstQueueAttr {
public static final String QUEUE_LAZY = "x-lazy"; // 브로커에서 RAM 사용량을 줄이기 위해 가능한 한 많은 메시지를 디스크에 유지하는 lazy 모드로 큐를 설정합니다.
public static final String QUEUE_TYPE = "x-queue-type"; // 'classic', 'quorum', 'stream' 중 하나의 큐 유형을 선언하기 위해 큐 인수를 설정합니다.
public static final String QUEUE_TTL = "x-message-ttl"; // 메시지의 생존 시간을 설정합니다.
public static final String QUEUE_EXPIRES = "x-expires"; // 큐가 삭제되기 전에 사용되지 않을 수 있는 시간을 설정합니다.
public static final String QUEUE_OVERFLOW = "x-overflow"; // 최대 메시지 수 또는 최대 메시지 크기가 초과되어 메시지가 삭제될 때의 오버플로 모드를 설정합니다.
public static final String QUEUE_PRIORITY = "x-max-priority"; // 큐가 지원할 메시지의 우선 순위 수의 최대값을 설정합니다.
public static final String QUEUE_MAX_LENGTH = "x-max-length"; // 큐에서 허용하는 (준비된) 메시지의 수를 설정합니다.
public static final String QUEUE_MAX_LENGTH_BYTE = "x-max-length-bytes"; // 큐에서 허용하는 총 메시지 바디 크기를 설정합니다. 이 크기를 초과하면 큐는 메시지를 삭제하기 시작합니다.
public static final String QUEUE_MASTER_LOCATOR = "x-queue-master-locator"; // 노드 클러스터에 큐 마스터가 위치할 노드를 결정하는 마스터 로케이터 모드를 설정합니다.
public static final String QUEUE_DEAD_LETTER_EXCHANGE = "x-dead-letter-exchange"; // 만료 또는 거부된 메시지를 라우팅할 dead-letter exchange를 설정합니다.
public static final String QUEUE_DEAD_LETTER_ROUTE_KEY = "x-dead-letter-routing-key"; // 만료 또는 거부된 메시지를 dead-letter exchange로 라우팅할 때 사용할 라우팅 키를 설정합니다.
public static final String QUEUE_SINGLE_ACTIVE_CONSUMER = "x-single-active-consumer"; // 'x-single-active-consumer' 큐 인수를 설정합니다. 이는 한 번에 하나의 소비자만 큐에서 메시지를 소비하도록 합니다.
}