blob: 0806ab33f766c05c5b7b1ce8d20f93918268e658 [file] [log] [blame]
<h1>Drain.java</h1>
<div class="highlight"><pre><span></span><span class="kn">package</span> <span class="nn">org.apache.qpid.example</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.jms.Connection</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.jms.Destination</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.jms.Message</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.jms.MessageConsumer</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.jms.Session</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.apache.qpid.client.AMQAnyDestination</span><span class="o">;</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">Drain</span> <span class="kd">extends</span> <span class="n">OptionParser</span>
<span class="o">{</span>
<span class="kd">static</span> <span class="kd">final</span> <span class="n">Option</span> <span class="n">FOREVER</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Option</span><span class="o">(</span><span class="s">&quot;f&quot;</span><span class="o">,</span>
<span class="s">&quot;forever&quot;</span><span class="o">,</span>
<span class="s">&quot;ignore timeout and wait forever&quot;</span><span class="o">,</span>
<span class="kc">null</span><span class="o">,</span>
<span class="kc">null</span><span class="o">,</span>
<span class="n">Boolean</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
<span class="kd">static</span> <span class="kd">final</span> <span class="n">Option</span> <span class="n">COUNT</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Option</span> <span class="o">(</span><span class="s">&quot;c&quot;</span><span class="o">,</span>
<span class="s">&quot;count&quot;</span><span class="o">,</span>
<span class="s">&quot;read c messages, then exit&quot;</span><span class="o">,</span>
<span class="s">&quot;COUNT&quot;</span><span class="o">,</span>
<span class="s">&quot;0&quot;</span><span class="o">,</span>
<span class="n">Integer</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
<span class="kd">static</span>
<span class="o">{</span>
<span class="n">addOption</span><span class="o">(</span><span class="n">BROKER</span><span class="o">);</span>
<span class="n">addOption</span><span class="o">(</span><span class="n">HELP</span><span class="o">);</span>
<span class="n">addOption</span><span class="o">(</span><span class="n">TIMEOUT</span><span class="o">);</span>
<span class="n">addOption</span><span class="o">(</span><span class="n">FOREVER</span><span class="o">);</span>
<span class="n">addOption</span><span class="o">(</span><span class="n">COUNT</span><span class="o">);</span>
<span class="n">addOption</span><span class="o">(</span><span class="n">CON_OPTIONS</span><span class="o">);</span>
<span class="n">addOption</span><span class="o">(</span><span class="n">BROKER_OPTIONS</span><span class="o">);</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="nf">Drain</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">,</span> <span class="n">String</span> <span class="n">usage</span><span class="o">,</span> <span class="n">String</span> <span class="n">desc</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span>
<span class="o">{</span>
<span class="kd">super</span><span class="o">(</span><span class="n">args</span><span class="o">,</span> <span class="n">usage</span><span class="o">,</span> <span class="n">desc</span><span class="o">);</span>
<span class="n">Connection</span> <span class="n">con</span> <span class="o">=</span> <span class="n">createConnection</span><span class="o">();</span>
<span class="n">con</span><span class="o">.</span><span class="na">start</span><span class="o">();</span>
<span class="n">Session</span> <span class="n">ssn</span> <span class="o">=</span> <span class="n">con</span><span class="o">.</span><span class="na">createSession</span><span class="o">(</span><span class="kc">false</span><span class="o">,</span><span class="n">Session</span><span class="o">.</span><span class="na">AUTO_ACKNOWLEDGE</span><span class="o">);</span>
<span class="n">Destination</span> <span class="n">dest</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AMQAnyDestination</span><span class="o">(</span><span class="n">getAddress</span><span class="o">());</span>
<span class="n">MessageConsumer</span> <span class="n">consumer</span> <span class="o">=</span> <span class="n">ssn</span><span class="o">.</span><span class="na">createConsumer</span><span class="o">(</span><span class="n">dest</span><span class="o">);</span>
<span class="n">Message</span> <span class="n">msg</span><span class="o">;</span>
<span class="kt">long</span> <span class="n">timeout</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="o">;</span>
<span class="kt">int</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
<span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
<span class="k">if</span> <span class="o">(</span><span class="n">containsOp</span><span class="o">(</span><span class="n">TIMEOUT</span><span class="o">))</span> <span class="o">{</span> <span class="n">timeout</span> <span class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">getOp</span><span class="o">(</span><span class="n">TIMEOUT</span><span class="o">))*</span><span class="mi">1000</span><span class="o">;</span> <span class="o">}</span>
<span class="k">if</span> <span class="o">(</span><span class="n">containsOp</span><span class="o">(</span><span class="n">FOREVER</span><span class="o">))</span> <span class="o">{</span> <span class="n">timeout</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="o">}</span>
<span class="k">if</span> <span class="o">(</span><span class="n">containsOp</span><span class="o">(</span><span class="n">COUNT</span><span class="o">))</span> <span class="o">{</span> <span class="n">count</span> <span class="o">=</span> <span class="n">Integer</span><span class="o">.</span><span class="na">parseInt</span><span class="o">(</span><span class="n">getOp</span><span class="o">(</span><span class="n">COUNT</span><span class="o">));</span> <span class="o">}</span>
<span class="k">while</span> <span class="o">((</span><span class="n">msg</span> <span class="o">=</span> <span class="n">consumer</span><span class="o">.</span><span class="na">receive</span><span class="o">(</span><span class="n">timeout</span><span class="o">))</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span>
<span class="o">{</span>
<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;\n------------- Msg -------------&quot;</span><span class="o">);</span>
<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">msg</span><span class="o">);</span>
<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&quot;-------------------------------\n&quot;</span><span class="o">);</span>
<span class="k">if</span> <span class="o">(</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(++</span><span class="n">i</span> <span class="o">==</span> <span class="n">count</span><span class="o">)</span> <span class="o">{</span>
<span class="k">break</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="n">consumer</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
<span class="n">ssn</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
<span class="n">con</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</span>
<span class="o">{</span>
<span class="n">String</span> <span class="n">u</span> <span class="o">=</span> <span class="s">&quot;Usage: drain [OPTIONS] &#39;ADDRESS&#39;&quot;</span><span class="o">;</span>
<span class="n">String</span> <span class="n">d</span> <span class="o">=</span> <span class="s">&quot;Drains messages from the specified address.&quot;</span><span class="o">;</span>
<span class="k">new</span> <span class="n">Drain</span><span class="o">(</span><span class="n">args</span><span class="o">,</span><span class="n">u</span><span class="o">,</span><span class="n">d</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
</pre></div>
<p><a href="Drain.java">Download this file</a></p>