4.11.3. 最後の値のキュー動作の例
この例では、最後の値キューの動作を示しています。
broker.xml
設定ファイルで、以下のような設定が追加されているとします。
<address name="my.address"> <multicast> <queue name="prices1" last-value-key="stock_ticker"/> </multicast> </address>
上記の設定では、prices1
というキューを作成し、最終値のキーを stock_ticker
としています。
ここで、クライアントが 2 つのメッセージを送信するとします。各メッセージには、プロパティー stock_ticker
に同じ値 ATN
があります。各メッセージには stock_ price
というプロパティーに異なる値があります。各メッセージは、同じキュー prices1
に送信されます。
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
last value キーと同じ値を持つ 2 つのメッセージ (この場合は ATN
) が prices1 queue
に到達すると、最新のメッセージのみがキュー内に残り、最初のメッセージがパージされます。コマンドラインで以下の行を入力し、この動作を検証できます。
TextMessage messageReceived = (TextMessage)messageConsumer.receive(5000); System.out.format("Received message: %s\n", messageReceived.getText());
この例では、両方のメッセージが最後の値キーに同じ値を使用し、2 番目のメッセージがキューに受信されたため、2 つ目のメッセージが表示されます。