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

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

4.12.1. 메시지 만료 구성

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

절차

  1. < 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이며 만료되지 않음을 의미합니다.By default, messages have an expiration time of 0, meaning that they don't expire. 만료 시간이 기본값보다 크면 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-delaymax-expiry-delay 값 간에 만료되는 메시지의 경우 브로커는 메시지의 만료 시간을 변경하지 않습니다.
    • expiry-delay (즉, 기본값 -1이 아닌)의 값을 지정하면 min-expiry-delaymax-expiry-delay 에 지정된 모든 값이 재정의됩니다.
    • min-expiry-delaymax-expiry-delay 의 기본값은 -1 입니다(즉, 비활성화됨).
  5. 구성 파일의 addresses 요소에서 expiry-address 에 대해 이전에 지정된 주소를 구성합니다. 이 주소에서 큐를 정의합니다. 예를 들면 다음과 같습니다.

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

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