| = Exclusive Queues |
| :idprefix: |
| :idseparator: - |
| :docinfo: shared |
| |
| Exclusive queues are special queues which dispatch all messages to only one consumer at a time. |
| |
| This is useful when you want all messages to be processed _serially_ but you can't or don't want to use xref:message-grouping.adoc#message-grouping[Message Grouping]. |
| |
| An example might be orders sent to an address and you need to consume them in the exact same order they were produced. |
| |
| Obviously exclusive queues have a draw back that you cannot scale out the consumers to improve consumption as only one consumer would technically be active. |
| Here we advise that you look at message groups first. |
| |
| == Configuring Exclusive Queues |
| |
| Exclusive queues can be statically configured using the `exclusive` boolean property: |
| |
| [,xml] |
| ---- |
| <address name="foo.bar"> |
| <multicast> |
| <queue name="orders1" exclusive="true"/> |
| </multicast> |
| </address> |
| ---- |
| |
| Specified on creating a Queue by using the CORE api specifying the parameter `exclusive` to `true`. |
| |
| Or on auto-create when using the JMS Client by using address parameters when creating the destination used by the consumer. |
| |
| [,java] |
| ---- |
| Queue queue = session.createQueue("my.destination.name?exclusive=true"); |
| Topic topic = session.createTopic("my.destination.name?exclusive=true"); |
| ---- |
| |
| Also the default for all queues under and address can be defaulted using the `address-setting` configuration: |
| |
| [,xml] |
| ---- |
| <address-setting match="lastValueQueue"> |
| <default-exclusive-queue>true</default-exclusive-queue> |
| </address-setting> |
| ---- |
| |
| By default, `default-exclusive-queue` is `false`. |
| Address xref:wildcard-syntax.adoc#wildcard-syntax[wildcards] can be used to configure exclusive queues for a set of addresses. |
| |
| == Example |
| |
| See the xref:examples.adoc#exclusive-queue[exclusive queue example] which shows how exclusive queues are configured and used with JMS. |