4.12. 만료된 메시지를 만료 주소로 이동


마지막 값 큐 이외의 큐의 경우 파괴적이지 않은 소비자만 있는 경우 브로커는 대기열에서 메시지를 삭제하지 않으므로 큐 크기가 시간이 지남에 따라 증가합니다. 큐 크기가 제한되지 않은 이러한 증가를 방지하려면 메시지가 만료되는 시기를 구성하고 브로커가 만료된 메시지를 이동하는 주소를 지정할 수 있습니다.

4.12.1. 메시지 만료 구성

다음 절차에서는 메시지 만료를 구성하는 방법을 보여줍니다.

프로세스

  1. &lt ;broker_instance_dir> /etc/broker.xml 구성 파일을 엽니다.
  2. core 요소에서 message-expiry-scan-period 를 설정하여 브로커가 만료된 메시지를 검색하는 빈도를 지정합니다.

    <configuration ...>
       <core ...>
          ...
          <message-expiry-scan-period>1000</message-expiry-scan-period>
          ...

    이전 구성을 기반으로 브로커는 1000 밀리초마다 만료된 메시지의 대기열을 검색합니다.

  3. 일치하는 주소 또는 주소 집합에 대한 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 는 적용되지 않습니다.

    예를 들어 이전 예제와 같이 주소에 expiry-delay10 으로 설정했다고 가정합니다. 기본 만료 시간이 0 인 메시지가 이 주소의 큐에 도달하는 경우 브로커는 메시지의 만료 시간을 0 에서 10 으로 변경합니다. 그러나 만료 시간 20 을 사용하는 다른 메시지가 도달하는 경우 만료 시간은 변경되지 않습니다. expiry-delay를 -1 로 설정하면 이 기능이 비활성화됩니다. 기본적으로 expiry-delay-1 로 설정됩니다.

  4. 또는 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-delaymax-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-delaymax-expiry-delay 에 대해 지정하는 모든 값을 덮어씁니다.
    • min-expiry-delaymax-expiry-delay 의 기본값은 -1 (즉, 비활성화됨)입니다.
  5. 구성 파일의 address 요소에서 이전에 expiry-address 에 지정된 주소를 구성합니다. 이 주소에 큐를 정의합니다. 예를 들면 다음과 같습니다.

    <addresses>
        ...
        <address name="ExpiryAddress">
            <anycast>
                <queue name="ExpiryQueue"/>
            </anycast>
        </address>
        ...
    </addresses>

    이전 예제 구성은 만료 큐인 ExpiryQueue 를 만료 주소인 ExpiryAddress 와 연결합니다.

4.12.2. 만료 리소스 자동 생성

일반적인 사용 사례는 원래 주소에 따라 만료된 메시지를 분리하는 것입니다. 예를 들어 주식 이라는 주소에서 만료된 메시지를 EXP.stocks 라는 만료 큐로 라우팅하도록 선택할 수 있습니다. 마찬가지로 주문이라는 주소에서 만료된 메시지를 EXP. orders 라는 만료 큐로 라우팅할 수 있습니다.

이러한 유형의 라우팅 패턴을 사용하면 만료된 메시지를 쉽게 추적, 검사 및 관리할 수 있습니다. 그러나 이러한 패턴은 주로 자동으로 생성된 주소와 큐를 사용하는 환경에서 구현하기 어렵습니다. 이러한 유형의 환경에서는 관리자가 만료된 메시지를 유지하기 위해 주소와 큐를 수동으로 생성하는 데 필요한 추가 노력을 기울이지 않습니다.

해결 방법으로 지정된 주소 또는 주소 집합에 대해 만료된 메시지를 처리하기 위해 자동으로 리소스(즉, 주소 및 대기열)를 생성하도록 브로커를 구성할 수 있습니다. 다음 절차에서는 예제를 보여줍니다.

사전 요구 사항

프로세스

  1. &lt ;broker_instance_dir&gt; /etc/broker.xml 구성 파일을 엽니다.
  2. 이전에 구성 파일에 추가한 & lt;address-setting > 요소를 찾아 일치하는 주소 또는 주소 집합에 대한 만료 주소를 정의합니다. 예를 들면 다음과 같습니다.

    <configuration ...>
    
       <core ...>
          ...
          <address-settings>
             ...
             <address-setting match="stocks">
                ...
                <expiry-address>ExpiryAddress</expiry-address>
                ...
             </address-setting>
             ...
          <address-settings>
    <configuration ...>
  3. < 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.stocks )입니다.

    expiry-queue-suffix
    브로커가 자동으로 생성된 만료 대기열 이름에 적용되는 접미사입니다. 기본값은 정의되지 않습니다(즉, 브로커는 접미사를 적용하지 않음).

자체적으로 큐 이름(예: AMQ Broker Core Protocol JMS 클라이언트를 사용하는 경우) 또는 정규화된 큐 이름(예: 다른 JMS 클라이언트를 사용하는 경우)을 사용하여 만료 대기열에 직접 액세스할 수 있습니다.

참고

만료 주소 및 큐가 자동으로 생성되므로 자동으로 생성된 주소 및 큐 삭제와 관련된 주소 설정이 이러한 만료 리소스에도 적용됩니다.

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.