| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta name="generator" content="Asciidoctor 2.0.18"> |
| <link rel="icon" type="image/png" href="images/favicon.png"> |
| <title>Exclusive Queues</title> |
| <link rel="stylesheet" href="css/asciidoctor.css"> |
| <link rel="stylesheet" href="css/font-awesome.css"> |
| <link rel="stylesheet" href="css/rouge-github.css"> |
| </head> |
| <body class="book toc2 toc-left"> |
| <div id="header"> |
| <h1>Exclusive Queues</h1> |
| <div id="toc" class="toc2"> |
| <div id="toctitle"><a href="index.html">User Manual for 2.33.0</a></div> |
| <ul class="sectlevel1"> |
| <li><a href="#configuring-exclusive-queues">1. Configuring Exclusive Queues</a></li> |
| <li><a href="#example">2. Example</a></li> |
| </ul> |
| </div> |
| </div> |
| <div id="content"> |
| <div id="preamble"> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Exclusive queues are special queues which dispatch all messages to only one consumer at a time.</p> |
| </div> |
| <div class="paragraph"> |
| <p>This is useful when you want all messages to be processed <em>serially</em> but you can’t or don’t want to use <a href="message-grouping.html#message-grouping">Message Grouping</a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>An example might be orders sent to an address and you need to consume them in the exact same order they were produced.</p> |
| </div> |
| <div class="paragraph"> |
| <p>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.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="configuring-exclusive-queues"><a class="anchor" href="#configuring-exclusive-queues"></a><a class="link" href="#configuring-exclusive-queues">1. Configuring Exclusive Queues</a></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Exclusive queues can be statically configured using the <code>exclusive</code> boolean property:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight nowrap"><code data-lang="xml"><span class="nt"><address</span> <span class="na">name=</span><span class="s">"foo.bar"</span><span class="nt">></span> |
| <span class="nt"><multicast></span> |
| <span class="nt"><queue</span> <span class="na">name=</span><span class="s">"orders1"</span> <span class="na">exclusive=</span><span class="s">"true"</span><span class="nt">/></span> |
| <span class="nt"></multicast></span> |
| <span class="nt"></address></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Specified on creating a Queue by using the CORE api specifying the parameter <code>exclusive</code> to <code>true</code>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Or on auto-create when using the JMS Client by using address parameters when creating the destination used by the consumer.</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight nowrap"><code data-lang="java"><span class="nc">Queue</span> <span class="n">queue</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="na">createQueue</span><span class="o">(</span><span class="s">"my.destination.name?exclusive=true"</span><span class="o">);</span> |
| <span class="nc">Topic</span> <span class="n">topic</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="na">createTopic</span><span class="o">(</span><span class="s">"my.destination.name?exclusive=true"</span><span class="o">);</span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Also the default for all queues under and address can be defaulted using the <code>address-setting</code> configuration:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight nowrap"><code data-lang="xml"><span class="nt"><address-setting</span> <span class="na">match=</span><span class="s">"lastValueQueue"</span><span class="nt">></span> |
| <span class="nt"><default-exclusive-queue></span>true<span class="nt"></default-exclusive-queue></span> |
| <span class="nt"></address-setting></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>By default, <code>default-exclusive-queue</code> is <code>false</code>. |
| Address <a href="wildcard-syntax.html#wildcard-syntax">wildcards</a> can be used to configure exclusive queues for a set of addresses.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="example"><a class="anchor" href="#example"></a><a class="link" href="#example">2. Example</a></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>See the <a href="examples.html#exclusive-queue">exclusive queue example</a> which shows how exclusive queues are configured and used with JMS.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </body> |
| </html> |