独占队列是一种特殊的队列,每次只将所有消息发送给一个消费者。

当您希望所有消息以**串行**方式处理,但不能或不想使用消息分组时,这非常有用。

例如,将订单发送到某个地址,您需要按订单产生的顺序处理它们。

显然,独占队列有一个缺点,即您无法扩展消费者以提高消费速度,因为只有一个消费者是活动的。在这里,我们建议您首先查看消息组。

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`。地址通配符 可用于配置一组地址的独占队列。

2. 示例

请参阅独占队列示例,该示例演示了如何使用 JMS 配置和使用独占队列。