검색

4.11. 마지막 값 대기열 구성

download PDF

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

참고

큐로 전송된 메시지가 호출되면 마지막 값 대기열이 예상대로 작동하지 않습니다. 마지막 값 큐가 있는 주소의 address-full-policy 매개변수 값을 DROP,BLOCK 또는 FAIL 로 설정하여 이러한 큐로 전송된 메시지가 호출되지 않도록 합니다. 자세한 내용은 7.2절. “메시지 삭제 구성”의 내용을 참조하십시오.

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

참고

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

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

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

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 의 기본 마지막 값 키 이름을 사용하는 마지막 값 큐를 구성할 수 있습니다. 이렇게 하려면 지정된 큐에 last-value 키를 추가합니다. 값을 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 주소와 연결된 모든 대기열은 possibility _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>

앞의 구성에서는 price1 이라는 큐를 생성하고 마지막 값 키는 sec _ticker 를 생성합니다.

클라이언트가 두 개의 메시지를 전송한다고 가정합니다. 각 메시지의 속성 sec _ticker 에 대해 ATN 의 값이 동일합니다. 각 메시지에는 price_ price 라는 속성에 대해 다른 값이 있습니다. 각 메시지는 동일한 큐, price1 로 전송됩니다.

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);

score _ticker 마지막 값 키(이 경우 ATN)에 대해 동일한 값을 가진 두 개의 메시지가 price1 큐에 도착하면 첫 번째 메시지가 삭제되고 최신 메시지만 큐에 남아 있습니다. 명령줄에서 다음 행을 입력하여 이 동작을 검증할 수 있습니다.

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.