最新值队列(Last-Value Queues)
最新值队列是一种特殊的队列。当一个新消息到达一个最新值队列时,它会将所有与该消息定义的Last-Value相同的旧消息
抛弃。换句话说,只有最新的消息被保留下来。
一个典型的用例是股价信息,通常你只关心一支股票的最新价格。
最新值队列的配置
最新值队列的配置在address-setting内:
<address-setting match="jms.queue.lastValueQueue">
<last-value-queue>true</last-value-queue>
</address-setting>
默认的last-value-queue值是false。可以使用通配符来匹配地址。
(参见 )。
使用Last-Value参数
用来标识最新值的参数名是"_HQ_LVQ_NAME"
(相当于核心API中定义的常量Message.HDR_LAST_VALUE_NAME)。
如果两个消息具有相同的Last-Value值,那么较新的消息就会保留,另外一个被丢弃:
// send 1st message with Last-Value property set to STOCK_NAME
TextMessage message =
session.createTextMessage("1st message with Last-Value property set");
message.setStringProperty("_HQ_LVQ_NAME", "STOCK_NAME");
producer.send(message);
// send 2nd message with Last-Value property set to STOCK_NAME
message =
session.createTextMessage("2nd message with Last-Value property set");
message.setStringProperty("_HQ_LVQ_NAME", "STOCK_NAME");
producer.send(message);
...
// only the 2nd message will be received: it is the latest with
// the Last-Value property set
TextMessage messageReceived = (TextMessage)messageConsumer.receive(5000);
System.out.format("Received message: %s\n", messageReceived.getText());
例子
参见。它展示的是在JMS应用中来配置和使用
最新值队列。