4.12. 만료된 메시지를 만료 주소로 이동
마지막 값 큐 이외의 대기열의 경우 결함이 없는 소비자만 있는 경우 브로커는 대기열에서 메시지를 삭제하지 않으므로 큐 크기가 시간이 지남에 따라 큐 크기가 증가합니다. 큐 크기의 제약되지 않은 증가를 방지하기 위해 메시지가 만료되는 시기를 구성하고 브로커가 만료된 메시지를 이동하는 주소를 지정할 수 있습니다.
4.12.1. 메시지 만료 구성
다음 절차에서는 메시지 만료를 구성하는 방법을 보여줍니다.
절차
-
<
;broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. core
요소에서message-expiry-scan-period
를 설정하여 브로커의 만료된 메시지를 스캔하는 빈도를 지정합니다.<configuration ...> <core ...> ... <message-expiry-scan-period>1000</message-expiry-scan-period> ...
위 구성에 따라 브로커는 1000밀리초 마다 만료된 메시지의 대기열을 스캔합니다.
일치하는 주소 또는 주소 집합에 대한
address-setting
요소에서 만료 주소를 지정합니다. 메시지 만료 시간을 설정합니다. 예를 들면 다음과 같습니다.<configuration ...> <core ...> ... <address-settings> ... <address-setting match="stocks"> ... <expiry-address>ExpiryAddress</expiry-address> <expiry-delay>10</expiry-delay> ... </address-setting> ... <address-settings> <configuration ...>
expiry-address
-
일치하는 주소 또는 주소에 대한 만료 주소입니다. 이전 예에서 브로커는 자재 주소에 대한 만료된 메시지를
ExpiryAddress
라는 만료 주소로 보냅니다. expiry-delay
브로커가 기본 만료 시간을 사용하는 메시지에 적용되는 만료 시간(밀리초)입니다. 기본적으로 메시지는 만료 시간이
0
이며, 이는 만료되지 않습니다. 기본값보다 만료 시간이 긴 메시지의 경우 expiration-delay
는 적용되지 않습니다.예를 들어 앞의 예제와 같이 주소의 expiration
-delay
를10
으로 설정했다고 가정합니다. 기본 만료 시간이0
인 메시지가 이 주소에서 큐에 도달하면 브로커는 메시지의 만료 시간을0
에서10
으로 변경합니다. 그러나 만료 시간을 사용 중인 다른 메시지가20
개의 도달한 경우 만료 시간은 변경되지 않습니다. expiration-delay를-1
로 설정하면 이 기능이 비활성화됩니다. 기본적으로 expiration-delay
는-1
로 설정됩니다.
또는 expiration
-delay의 값을 지정하는 대신 최소 및 최대 만료
지연 값을 지정할 수 있습니다. 예를 들면 다음과 같습니다.<configuration ...> <core ...> ... <address-settings> ... <address-setting match="stocks"> ... <expiry-address>ExpiryAddress</expiry-address> <min-expiry-delay>10</min-expiry-delay> <max-expiry-delay>100</max-expiry-delay> ... </address-setting> ... <address-settings> <configuration ...>
min-expiry-delay
- 브로커가 메시지에 적용되는 최소 만료 시간(밀리초)입니다.
max-expiry-delay
브로커가 메시지에 적용되는 최대 만료 시간(밀리초)입니다.
브로커는 다음과 같이
min-expiry-delay
및max-expiry-delay
값을 적용합니다.-
기본 만료 시간이
0
인 메시지의 경우 브로커는 만료 시간을max-expiry-delay
의 지정된 값으로 설정합니다.max-expiry-delay
의 값을 지정하지 않은 경우 브로커는 만료 시간을min-expiry-delay
의 지정된 값으로 설정합니다.min-expiry-delay
의 값을 지정하지 않은 경우 브로커는 메시지의 만료 시간을 변경하지 않습니다. -
max-expiry-delay
값을 초과하는 만료 시간이 있는 메시지의 경우 브로커는 만료 시간을 지정된max-expiry-delay
값으로 설정합니다. -
min-expiry-delay
값이 있는 만료 시간이 있는 메시지의 경우 브로커는 만료 시간을min-expiry-delay
의 지정된 값으로 설정합니다. -
min-expiry-delay
및max-expiry-delay
값 사이의 만료가 있는 메시지의 경우 브로커는 메시지의 만료 시간을 변경하지 않습니다. -
expiration
-delay
(기본값-1
)에 대한 값을 지정하면min-expiry-delay
및max-expiry-delay
에 대해 지정한 값을 덮어씁니다. -
min-expiry-delay
및max-expiry-delay
의 기본값은-1
입니다(즉, 비활성화됨).
-
기본 만료 시간이
구성 파일의 address 요소에서 이전에 지정한 address를 expiration
-address에 대해
구성합니다.이 주소에 큐를 정의합니다. 예를 들면 다음과 같습니다.
<addresses> ... <address name="ExpiryAddress"> <anycast> <queue name="ExpiryQueue"/> </anycast> </address> ... </addresses>
앞의 예제 구성은 만료 큐인
ExpiryQueue
를 만료 주소ExpiryAddress
와 연결합니다.
4.12.2. 만료 리소스 자동 생성
일반적인 사용 사례는 원래 주소에 따라 만료된 메시지를 분류하는 것입니다. 예를 들어 인증서라는 주소에서 EXP.itemss
라는 만료 큐로 만료된 메시지를 라우팅하도록 선택할 수 있습니다. 마찬가지로
orders
라는 주소에서 EXP.orders
라는 만료 큐로 만료된 메시지를 라우팅할 수 있습니다.
이러한 유형의 라우팅 패턴을 사용하면 만료된 메시지를 쉽게 추적, 검사 및 관리할 수 있습니다. 그러나 이와 같은 패턴은 자동으로 생성된 주소 및 큐를 주로 사용하는 환경에서 구현하기 어렵습니다. 이러한 유형의 환경에서 관리자는 만료된 메시지를 유지하기 위해 주소와 큐를 수동으로 생성하는 데 필요한 추가 노력을 원하지 않습니다.
솔루션은 지정된 주소 또는 주소 집합에 대해 만료된 메시지를 처리하도록 리소스(즉, 주소 및 대기열)를 자동으로 생성하도록 브로커를 구성할 수 있습니다. 다음 절차에서는 예제를 보여줍니다.
사전 요구 사항
- 지정된 주소 또는 주소 집합에 대한 만료 주소를 이미 구성했습니다. 자세한 내용은 4.12.1절. “메시지 만료 구성”의 내용을 참조하십시오.
절차
-
<
;broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. 구성 파일에 이전에 추가한 &
lt;address-setting
> 요소를 찾아 일치하는 주소 또는 주소 집합에 대한 만료 주소를 정의합니다. 예를 들면 다음과 같습니다.<configuration ...> <core ...> ... <address-settings> ... <address-setting match="stocks"> ... <expiry-address>ExpiryAddress</expiry-address> ... </address-setting> ... <address-settings> <configuration ...>
<
address-setting
> 요소에서 브로커가 만료 리소스(즉, 주소 및 대기열)를 자동으로 생성하도록 지시하는 구성 항목과 이러한 리소스의 이름을 지정하는 방법을 추가합니다. 예를 들면 다음과 같습니다.<configuration ...> <core ...> ... <address-settings> ... <address-setting match="stocks"> ... <expiry-address>ExpiryAddress</expiry-address> <auto-create-expiry-resources>true</auto-create-expiry-resources> <expiry-queue-prefix>EXP.</expiry-queue-prefix> <expiry-queue-suffix></expiry-queue-suffix> ... </address-setting> ... <address-settings> <configuration ...>
auto-create-expiry-resources
브로커가 만료된 메시지를 수신하기 위해 만료 주소 및 큐를 자동으로 생성하는지 여부를 지정합니다. 기본값은
false
입니다.매개변수 값이
true
로 설정되면 브로커는 만료주소와
관련 만료 큐를 정의하는 <address> 요소를 자동으로 생성합니다. 자동 생성 <address> 요소의
name 값은 에<expiry-address>
지정된 name 값과 일치합니다.자동 생성된 만료 큐에는
멀티 캐스트
라우팅 유형이 있습니다. 기본적으로 브로커 이름은 만료된 메시지가 원래 전송된 주소와 일치하도록 만료 큐의 이름을 지정합니다(예: 스포지
).브로커는
_AMQ_ORIG_ADDRESS
속성을 사용하는 만료 큐에 대한 필터도 정의합니다. 이 필터를 사용하면 만료 큐가 해당 원래 주소로 전송된 메시지만 수신합니다.expiry-queue-prefix
브로커가 자동으로 생성된 만료 큐의 이름에 적용되는 접두사입니다. 기본값은
EXP입니다.
접두사 값을 정의하거나 기본값을 유지하는 경우 만료 큐의 이름은 접두사와 원래 주소(예:
EXP.>-<s
)의 연결입니다.expiry-queue-suffix
- 브로커가 자동으로 생성된 만료 큐의 이름에 적용되는 접미사입니다. 기본값은 정의되지 않습니다(즉 브로커는 접미사를 적용하지 않음).
자체(예: AMQ Broker Core Protocol JMS 클라이언트를 사용하는 경우) 대기열 이름을 사용하거나 정규화된 큐 이름(예: 다른 JMS 클라이언트를 사용하는 경우)을 사용하여 만료 대기열에 직접 액세스할 수 있습니다.
만료 주소 및 큐가 자동으로 생성되므로 자동 생성된 주소 및 큐 삭제와 관련된 주소 설정도 이러한 만료 리소스에 적용됩니다.
추가 리소스
- 자동 생성된 주소 및 큐 자동 삭제를 구성하는 데 사용되는 주소 설정에 대한 자세한 내용은 4.8.2절. “주소 및 큐 자동 생성 및 삭제 구성” 을 참조하십시오.