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 的属性具有不同的值。每条消息都发送到同一队列 price 1

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 键(本例中为 ATN)具有相同值的两个消息到达 price 1 队列 时,只有最新的消息保留在队列中,其中第一条消息将被清除。在命令行中,您可以输入以下行来验证此行为:

TextMessage messageReceived = (TextMessage)messageConsumer.receive(5000);
System.out.format("Received message: %s\n", messageReceived.getText());

在本示例中,您看到的输出是第二条消息,因为两条消息对最后一个值键都使用相同的值,而且第一个消息之后的队列中收到第二条消息。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.