4.11. 마지막 값 대기열 구성


마지막 값 큐 는 마지막 값 키 값이 있는 최신 메시지가 큐에 배치될 때 큐에서 메시지를 삭제하는 큐 유형입니다. 이 동작을 통해 마지막 값 큐는 동일한 키의 메시지에 대한 마지막 값만 유지합니다.

마지막 값 큐에 대한 간단한 사용 사례는 특정 스포지트의 최신 값만 관심 있는 SAP 가격을 모니터링하는 것입니다.

참고

구성된 마지막 값 키가 없는 메시지가 마지막 값 큐로 전송되면 브로커는 이 메시지를 "일반" 메시지로 처리합니다. 이러한 메시지는 구성된 마지막 값 키가 도달한 새 메시지가 표시되면 대기열에서 제거되지 않습니다.

마지막 값 큐를 개별적으로 또는 주소 집합과 연결된 모든 큐에 대해 구성할 수 있습니다.

다음 절차에서는 이러한 방식으로 마지막 값 큐를 구성하는 방법을 보여줍니다.

4.11.1. 마지막 값 대기열을 개별적으로 구성

다음 절차에서는 마지막 값 큐를 개별적으로 구성하는 방법을 보여줍니다.

  1. &lt ;broker_instance_dir> /etc/broker.xml 구성 파일을 엽니다.
  2. 지정된 큐의 경우 last-value-key 키를 추가하고 사용자 지정 값을 지정합니다. 예를 들면 다음과 같습니다.

    <address name="my.address">
        <multicast>
            <queue name="prices1" last-value-key="stock_ticker"/>
        </multicast>
    </address>
  3. 또는 _AMQ_LVQ_NAME 의 기본 마지막 값 키 이름을 사용하는 마지막 값 큐를 구성할 수 있습니다. 이렇게 하려면 지정된 큐에 마지막-값 키를 추가합니다. 값을 true 로 설정합니다. 예를 들면 다음과 같습니다.

    <address name="my.address">
        <multicast>
            <queue name="prices1" last-value="true"/>
        </multicast>
    </address>

4.11.2. 주소에 대한 마지막 값 대기열 구성

다음 절차에서는 주소 또는 주소 집합에 대한 마지막 값 대기열을 구성하는 방법을 보여줍니다.

  1. &lt ;broker_instance_dir&gt; /etc/broker.xml 구성 파일을 엽니다.
  2. address-setting 요소에서 일치하는 주소에 대해 default-last-value-key 를 추가합니다. 사용자 지정 값을 지정합니다. 예를 들면 다음과 같습니다.

    <address-setting match="lastValue">
       <default-last-value-key>stock_ticker</default-last-value-key>
    </address-setting>

    앞의 구성에 따라 lastValue 주소와 연결된 모든 큐는 lost _ticker 의 마지막 값 키를 사용합니다. 기본적으로 default-last-value-key 값은 설정되지 않습니다.

  3. 주소 집합에 대한 마지막 값 대기열을 구성하려면 주소 와일드카드를 지정할 수 있습니다. 예를 들면 다음과 같습니다.

    <address-setting match="lastValue.*">
       <default-last-value-key>stock_ticker</default-last-value-key>
    </address-setting>
  4. 또는 _AMQ_LVQ_NAME 의 기본 마지막 값 키 이름을 사용하도록 주소 또는 주소 세트 와 연결된 모든 대기열을 구성할 수 있습니다. 이렇게 하려면 default-last-value-key 대신 default-last-value-queue 를 추가합니다. 값을 true 로 설정합니다. 예를 들면 다음과 같습니다.

    <address-setting match="lastValue">
       <default-last-value-queue>true</default-last-value-queue>
    </address-setting>

추가 리소스

4.11.3. 마지막 값 대기열 동작 예

이 예제에서는 마지막 값 큐의 동작을 보여줍니다.

broker.xml 구성 파일에서 다음과 같은 구성이 추가되었다고 가정합니다.

<address name="my.address">
    <multicast>
        <queue name="prices1" last-value-key="stock_ticker"/>
    </multicast>
</address>

앞의 구성에서는 price 1이라는 큐 를 만들고 마지막 값 키의 slice _ticker.

이제 클라이언트가 두 개의 메시지를 전송한다고 가정합니다. 각 메세지는 property rail _ticker에 대해 ATN 의 동일한 값을 갖습니다. 각 메시지에는 rail _ price 라는 속성에 대해 다른 값이 있습니다. 각 메시지는 동일한 큐, price 1로 전송됩니다.

TextMessage message = session.createTextMessage("First message with last value property set");
message.setStringProperty("stock_ticker", "ATN");
message.setStringProperty("stock_price", "36.83");
producer.send(message);
TextMessage message = session.createTextMessage("Second message with last value property set");
message.setStringProperty("stock_ticker", "ATN");
message.setStringProperty("stock_price", "37.02");
producer.send(message);

Secur _ticker 의 마지막 값 키(이 경우 ATN)에 대해 동일한 값을 가진 두 개의 메시지가 price 1 큐에 도달하면 최신 메시지만 큐에 남아 있으며 첫 번째 메시지가 제거됩니다. 명령줄에서 다음 줄을 입력하여 이 동작을 검증할 수 있습니다.

TextMessage messageReceived = (TextMessage)messageConsumer.receive(5000);
System.out.format("Received message: %s\n", messageReceived.getText());

이 예에서 두 메시지 모두 마지막 값 키에 대해 동일한 값을 사용하고 두 번째 메시지가 첫 번째 뒤에 큐에서 수신되었기 때문에 표시되는 출력은 두 번째 메시지입니다.

4.11.4. 마지막 값 큐에 대해 분할되지 않은 사용 적용

소비자가 큐에 연결하면 일반 동작은 해당 소비자에게 전송된 메시지가 소비자가 독점적으로 취득하는 것입니다. 소비자가 메시지 수신을 승인하면 브로커는 큐에서 메시지를 제거합니다.

일반 사용 동작 대신, 비차별 사용을 강제 적용하도록 대기열을 구성할 있습니다. 이 경우 큐가 소비자에게 메시지를 보낼 때 다른 소비자가 메시지를 계속 수신할 수 있습니다. 또한 메시지는 소비자가 사용한 경우에도 큐에 남아 있습니다. 이러한 무차별 사용 동작을 적용하면 소비자는 큐 브라우저 라고 합니다.

비차별 사용을 강제 적용하는 것은 대기열이 특정 마지막 값 키의 최신 값을 항상 보유하고 있는지 확인하기 때문에 마지막 값 큐에 유용한 구성입니다.

다음 절차에서는 마지막 값 큐에 대해 비 결정적인 소비를 적용하는 방법을 보여줍니다.

사전 요구 사항

절차

  1. &lt ;broker_instance_dir&gt; /etc/broker.xml 구성 파일을 엽니다.
  2. 이전에 대기열을 마지막 값 큐로 개별적으로 구성한 경우 디 지드되지 않은 키를 추가합니다. 값을 true 로 설정합니다. 예를 들면 다음과 같습니다.

    <address name="my.address">
       <multicast>
          <queue name="orders1" last-value-key="stock_ticker" non-destructive="true" />
       </multicast>
    </address>
  3. 이전에 마지막 값 큐에 대한 주소 또는 주소 집합을 구성한 경우 default-non-destructive 키를 추가합니다. 값을 true 로 설정합니다. 예를 들면 다음과 같습니다.

    <address-setting match="lastValue">
       <default-last-value-key>stock_ticker </default-last-value-key>
       <default-non-destructive>true</default-non-destructive>
    </address-setting>
    참고

    기본적으로 default-non-destructive 의 값은 false 입니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.