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이며 만료되지 않음을 의미합니다.By default, messages have an expiration time of
0
, meaning that they don't expire. 만료 시간이 기본값보다 크면 expiration-delay
가 적용되지 않습니다.예를 들어 위 예에 표시된 대로 주소에서
expiry-delay
를10
으로 설정했다고 가정합니다. 기본 만료 시간이0
인 메시지가 이 주소에서 큐에 도달하면 브로커는 메시지의 만료 시간을0
에서10
으로 변경합니다. 그러나20
의 만료 시간을 사용하는 다른 메시지가 도착하면 만료 시간은 변경되지 않습니다. expiry-delay를-1
로 설정하면 이 기능이 비활성화됩니다. 기본적으로expiry-delay
는-1
로 설정됩니다.
또는
expiry-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
값 간에 만료되는 메시지의 경우 브로커는 메시지의 만료 시간을 변경하지 않습니다. -
expiry-delay
(즉, 기본값-1
이 아닌)의 값을 지정하면min-expiry-delay
및max-expiry-delay
에 지정된 모든 값이 재정의됩니다. -
min-expiry-delay
및max-expiry-delay
의 기본값은-1
입니다(즉, 비활성화됨).
-
기본 만료 시간이
구성 파일의
addresses
요소에서expiry-address
에 대해 이전에 지정된 주소를 구성합니다. 이 주소에서 큐를 정의합니다. 예를 들면 다음과 같습니다.<addresses> ... <address name="ExpiryAddress"> <anycast> <queue name="ExpiryQueue"/> </anycast> </address> ... </addresses>
앞의 예제 구성은 만료 큐인
ExpiryQueue
를 만료 주소ExpiryAddress
와 연결합니다.