4.11.3. 마지막 값 큐 동작의 예

이 예에서는 마지막 값 대기열의 동작을 보여줍니다.

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

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

앞의 구성은 price1 이라는 큐를 생성하고 마지막 값의 stock_ticker 를 사용합니다.

이제 클라이언트가 두 개의 메시지를 전송한다고 가정합니다. 각 메시지는 속성 stock_ticker 에 대해 ATN 의 값과 같습니다. 각 메시지에는 stock_ 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);

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

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

이 예제에서는 두 메시지가 모두 마지막 값 키에 대해 동일한 값을 사용하고 두 번째 메시지가 첫 번째 후 큐에 수신된 두 번째 메시지가 두 번째 메시지입니다.