4.9.5. Last Value キューの動作例
この例は、last value キューの設定と動作を示しています。
broker.xml 設定ファイルで、以下のような設定が追加されているとします。
<address name="my.address">
<multicast>
<queue name="prices1" last-value-key="stock_ticker"/>
</multicast>
</address>
上記の設定では、last value キーが stock_ticker で、price1 という last value キューが作成されます。
ここで、以下に示すように、クライアントが同じ last value プロパティー名を持つ 2 つのメッセージを prices1 キューに送信するとします。
TextMessage message = session.createTextMessage("First message with last value property set");
message.setStringProperty("stock_ticker", "36.83");
producer.send(message);
TextMessage message = session.createTextMessage("Second message with last value property set");
message.setStringProperty("stock_ticker", "37.02");
producer.send(message);
last value プロパティー名が同じ 2 つのメッセージが last value キュー price1 に到着すると、最新のメッセージのみがキューに残り、最初のメッセージは消去されます。コマンドラインで以下の行を入力し、この動作を検証できます。
TextMessage messageReceived = (TextMessage)messageConsumer.receive(5000);
System.out.format("Received message: %s\n", messageReceived.getText());
この例では、どちらのメッセージも last value プロパティーを使用しており、2 番目のメッセージが 1 番目のメッセージのあとにキューに入ったため、出力として 2 番目のメッセージが表示されます。