| |
| <h1>Spout.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.MapMessage</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.MessageProducer</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">Spout</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">COUNT</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Option</span><span class="o">(</span><span class="s">"c"</span><span class="o">,</span> |
| <span class="s">"count"</span><span class="o">,</span> |
| <span class="s">"stop after count messages have been sent, zero disables"</span><span class="o">,</span> |
| <span class="s">"COUNT"</span><span class="o">,</span> |
| <span class="s">"1"</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="kd">final</span> <span class="n">Option</span> <span class="n">ID</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Option</span><span class="o">(</span><span class="s">"i"</span><span class="o">,</span> |
| <span class="s">"id"</span><span class="o">,</span> |
| <span class="s">"use the supplied id instead of generating one"</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">CONTENT</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Option</span><span class="o">(</span><span class="kc">null</span><span class="o">,</span> |
| <span class="s">"content"</span><span class="o">,</span> |
| <span class="s">"specify textual content"</span><span class="o">,</span> |
| <span class="s">"TEXT"</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">MSG_PROPERTY</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Option</span><span class="o">(</span><span class="s">"P"</span><span class="o">,</span> |
| <span class="s">"property"</span><span class="o">,</span> |
| <span class="s">"specify message property"</span><span class="o">,</span> |
| <span class="s">"NAME=VALUE"</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">MAP_ENTRY</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Option</span><span class="o">(</span><span class="s">"M"</span><span class="o">,</span> |
| <span class="s">"map"</span><span class="o">,</span> |
| <span class="s">"specify entry for map content"</span><span class="o">,</span> |
| <span class="s">"KEY=VALUE"</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="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">COUNT</span><span class="o">);</span> |
| <span class="n">addOption</span><span class="o">(</span><span class="n">MSG_PROPERTY</span><span class="o">);</span> |
| <span class="n">addOption</span><span class="o">(</span><span class="n">MAP_ENTRY</span><span class="o">);</span> |
| <span class="n">addOption</span><span class="o">(</span><span class="n">CONTENT</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">Spout</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">MessageProducer</span> <span class="n">producer</span> <span class="o">=</span> <span class="n">ssn</span><span class="o">.</span><span class="na">createProducer</span><span class="o">(</span><span class="n">dest</span><span class="o">);</span> |
| |
| <span class="kt">int</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="k">for</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="n">i</span> <span class="o"><</span> <span class="n">count</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> |
| <span class="o">{</span> |
| <span class="n">Message</span> <span class="n">msg</span> <span class="o">=</span> <span class="n">createMessage</span><span class="o">(</span><span class="n">ssn</span><span class="o">);</span> |
| <span class="n">producer</span><span class="o">.</span><span class="na">send</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">"\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="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">"-------------------------------\n"</span><span class="o">);</span> |
| <span class="o">}</span> |
| <span class="n">producer</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">private</span> <span class="n">Message</span> <span class="nf">createMessage</span><span class="o">(</span><span class="n">Session</span> <span class="n">ssn</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</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">MAP_ENTRY</span><span class="o">))</span> |
| <span class="o">{</span> |
| <span class="n">MapMessage</span> <span class="n">msg</span> <span class="o">=</span> <span class="n">ssn</span><span class="o">.</span><span class="na">createMapMessage</span><span class="o">();</span> |
| <span class="k">for</span> <span class="o">(</span><span class="n">String</span> <span class="n">pair</span><span class="o">:</span> <span class="n">getOp</span><span class="o">(</span><span class="n">MAP_ENTRY</span><span class="o">).</span><span class="na">split</span><span class="o">(</span><span class="s">","</span><span class="o">))</span> |
| <span class="o">{</span> |
| <span class="n">msg</span><span class="o">.</span><span class="na">setString</span><span class="o">(</span><span class="n">pair</span><span class="o">.</span><span class="na">substring</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="n">pair</span><span class="o">.</span><span class="na">indexOf</span><span class="o">(</span><span class="sc">'='</span><span class="o">)),</span> |
| <span class="n">pair</span><span class="o">.</span><span class="na">substring</span><span class="o">(</span><span class="n">pair</span><span class="o">.</span><span class="na">indexOf</span><span class="o">(</span><span class="sc">'='</span><span class="o">)</span> <span class="o">+</span> <span class="mi">1</span><span class="o">));</span> |
| <span class="o">}</span> |
| <span class="n">setProperties</span><span class="o">(</span><span class="n">msg</span><span class="o">);</span> |
| <span class="k">return</span> <span class="n">msg</span><span class="o">;</span> |
| <span class="o">}</span> |
| <span class="k">else</span> |
| <span class="o">{</span> |
| <span class="n">Message</span> <span class="n">msg</span> <span class="o">=</span> |
| <span class="n">ssn</span><span class="o">.</span><span class="na">createTextMessage</span><span class="o">(</span><span class="n">containsOp</span><span class="o">(</span><span class="n">CONTENT</span><span class="o">)</span> <span class="o">?</span> <span class="n">getOp</span><span class="o">(</span><span class="n">CONTENT</span><span class="o">)</span> <span class="o">:</span> <span class="s">""</span><span class="o">);</span> |
| <span class="n">setProperties</span><span class="o">(</span><span class="n">msg</span><span class="o">);</span> |
| <span class="k">return</span> <span class="n">msg</span><span class="o">;</span> |
| <span class="o">}</span> |
| <span class="o">}</span> |
| |
| <span class="kd">private</span> <span class="kt">void</span> <span class="nf">setProperties</span><span class="o">(</span><span class="n">Message</span> <span class="n">m</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">Exception</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">MSG_PROPERTY</span><span class="o">))</span> |
| <span class="o">{</span> |
| <span class="k">for</span> <span class="o">(</span><span class="n">String</span> <span class="n">pair</span><span class="o">:</span> <span class="n">getOp</span><span class="o">(</span><span class="n">MSG_PROPERTY</span><span class="o">).</span><span class="na">split</span><span class="o">(</span><span class="s">","</span><span class="o">))</span> |
| <span class="o">{</span> |
| <span class="n">m</span><span class="o">.</span><span class="na">setStringProperty</span><span class="o">(</span><span class="n">pair</span><span class="o">.</span><span class="na">substring</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="n">pair</span><span class="o">.</span><span class="na">indexOf</span><span class="o">(</span><span class="sc">'='</span><span class="o">)),</span> |
| <span class="n">pair</span><span class="o">.</span><span class="na">substring</span><span class="o">(</span><span class="n">pair</span><span class="o">.</span><span class="na">indexOf</span><span class="o">(</span><span class="sc">'='</span><span class="o">)</span> <span class="o">+</span> <span class="mi">1</span><span class="o">));</span> |
| <span class="o">}</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">"Usage: spout [OPTIONS] 'ADDRESS'"</span><span class="o">;</span> |
| <span class="n">String</span> <span class="n">d</span> <span class="o">=</span> <span class="s">"Send messages to the specified address."</span><span class="o">;</span> |
| |
| <span class="k">new</span> <span class="n">Spout</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="Spout.java">Download this file</a></p> |