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