独占队列是一种特殊的队列,每次只将所有消息发送给一个消费者。
当您希望所有消息以**串行**方式处理,但不能或不想使用消息分组时,这非常有用。
例如,将订单发送到某个地址,您需要按订单产生的顺序处理它们。
显然,独占队列有一个缺点,即您无法扩展消费者以提高消费速度,因为只有一个消费者是活动的。在这里,我们建议您首先查看消息组。
1. 配置独占队列
可以使用 `exclusive` 布尔属性静态配置独占队列。
<address name="foo.bar">
<multicast>
<queue name="orders1" exclusive="true"/>
</multicast>
</address>
使用 CORE API 创建队列时指定,将参数 `exclusive` 设置为 `true`。
或者在使用 JMS 客户端时自动创建,使用消费者使用的目标地址参数。
Queue queue = session.createQueue("my.destination.name?exclusive=true");
Topic topic = session.createTopic("my.destination.name?exclusive=true");
此外,可以使用 `address-setting` 配置默认所有地址下的队列。
<address-setting match="lastValueQueue">
<default-exclusive-queue>true</default-exclusive-queue>
</address-setting>
默认情况下,`default-exclusive-queue` 为 `false`。地址通配符 可用于配置一组地址的独占队列。