4.11.3. 最后一个值队列行为示例
此示例显示最后一个值队列的行为。
在 broker.xml
配置文件中,假设您添加了类似如下的配置:
<address name="my.address"> <multicast> <queue name="prices1" last-value-key="stock_ticker"/> </multicast> </address>
上述配置将创建一个名为 price 1 的队列
,其最后一个值为 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
值为 value 键的消息(本例中为 ATN
)到达 price 1 队列
,且只有最新的消息保留在队列中,第一条消息会被清除。在命令行中输入以下行来验证此行为:
TextMessage messageReceived = (TextMessage)messageConsumer.receive(5000); System.out.format("Received message: %s\n", messageReceived.getText());
在本例中,您看到的输出是第二个消息,因为这两个消息都为最后一个值键使用相同的值,而第二个消息则在第一个队列中收到。