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());
이 예제에서는 두 메시지가 모두 마지막 값 키에 대해 동일한 값을 사용하고 두 번째 메시지가 첫 번째 후 큐에 수신된 두 번째 메시지가 두 번째 메시지입니다.