http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.0.4/storm-mongodb.html ---------------------------------------------------------------------- diff --git a/content/releases/1.0.4/storm-mongodb.html b/content/releases/1.0.4/storm-mongodb.html index 271f764..12b230b 100644 --- a/content/releases/1.0.4/storm-mongodb.html +++ b/content/releases/1.0.4/storm-mongodb.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> @@ -170,7 +170,7 @@ <p>The main API for inserting data in a collection using MongoDB is the <code>org.apache.storm.mongodb.common.mapper.MongoMapper</code> interface:</p> <div class="highlight"><pre><code class="language-java" data-lang="java"><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">MongoMapper</span> <span class="kd">extends</span> <span class="n">Serializable</span> <span class="o">{</span> - <span class="n">Document</span> <span class="n">toDocument</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">);</span> + <span class="n">Document</span> <span class="nf">toDocument</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">);</span> <span class="o">}</span> </code></pre></div> <h3 id="simplemongomapper">SimpleMongoMapper</h3> @@ -180,7 +180,7 @@ <span class="kd">private</span> <span class="n">String</span><span class="o">[]</span> <span class="n">fields</span><span class="o">;</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="n">Document</span> <span class="n">toDocument</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">Document</span> <span class="nf">toDocument</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> <span class="n">Document</span> <span class="n">document</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Document</span><span class="o">();</span> <span class="k">for</span><span class="o">(</span><span class="n">String</span> <span class="n">field</span> <span class="o">:</span> <span class="n">fields</span><span class="o">){</span> <span class="n">document</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="n">field</span><span class="o">,</span> <span class="n">tuple</span><span class="o">.</span><span class="na">getValueByField</span><span class="o">(</span><span class="n">field</span><span class="o">));</span> @@ -188,7 +188,7 @@ <span class="k">return</span> <span class="n">document</span><span class="o">;</span> <span class="o">}</span> - <span class="kd">public</span> <span class="n">SimpleMongoMapper</span> <span class="n">withFields</span><span class="o">(</span><span class="n">String</span><span class="o">...</span> <span class="n">fields</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">SimpleMongoMapper</span> <span class="nf">withFields</span><span class="o">(</span><span class="n">String</span><span class="o">...</span> <span class="n">fields</span><span class="o">)</span> <span class="o">{</span> <span class="k">this</span><span class="o">.</span><span class="na">fields</span> <span class="o">=</span> <span class="n">fields</span><span class="o">;</span> <span class="k">return</span> <span class="k">this</span><span class="o">;</span> <span class="o">}</span> @@ -245,15 +245,15 @@ <span class="kd">private</span> <span class="n">String</span><span class="o">[]</span> <span class="n">fields</span><span class="o">;</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="n">Document</span> <span class="n">toDocument</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">Document</span> <span class="nf">toDocument</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> <span class="n">Document</span> <span class="n">document</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Document</span><span class="o">();</span> <span class="k">for</span><span class="o">(</span><span class="n">String</span> <span class="n">field</span> <span class="o">:</span> <span class="n">fields</span><span class="o">){</span> <span class="n">document</span><span class="o">.</span><span class="na">append</span><span class="o">(</span><span class="n">field</span><span class="o">,</span> <span class="n">tuple</span><span class="o">.</span><span class="na">getValueByField</span><span class="o">(</span><span class="n">field</span><span class="o">));</span> <span class="o">}</span> - <span class="k">return</span> <span class="k">new</span> <span class="n">Document</span><span class="o">(</span><span class="s">"$set"</span><span class="o">,</span> <span class="n">document</span><span class="o">);</span> + <span class="k">return</span> <span class="k">new</span> <span class="nf">Document</span><span class="o">(</span><span class="s">"$set"</span><span class="o">,</span> <span class="n">document</span><span class="o">);</span> <span class="o">}</span> - <span class="kd">public</span> <span class="n">SimpleMongoUpdateMapper</span> <span class="n">withFields</span><span class="o">(</span><span class="n">String</span><span class="o">...</span> <span class="n">fields</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">SimpleMongoUpdateMapper</span> <span class="nf">withFields</span><span class="o">(</span><span class="n">String</span><span class="o">...</span> <span class="n">fields</span><span class="o">)</span> <span class="o">{</span> <span class="k">this</span><span class="o">.</span><span class="na">fields</span> <span class="o">=</span> <span class="n">fields</span><span class="o">;</span> <span class="k">return</span> <span class="k">this</span><span class="o">;</span> <span class="o">}</span> @@ -263,7 +263,7 @@ <p>The main API for creating a MongoDB query Filter is the <code>org.apache.storm.mongodb.common.QueryFilterCreator</code> interface:</p> <div class="highlight"><pre><code class="language-java" data-lang="java"><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">QueryFilterCreator</span> <span class="kd">extends</span> <span class="n">Serializable</span> <span class="o">{</span> - <span class="n">Bson</span> <span class="n">createFilter</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">);</span> + <span class="n">Bson</span> <span class="nf">createFilter</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">);</span> <span class="o">}</span> </code></pre></div> <h3 id="simplequeryfiltercreator">SimpleQueryFilterCreator</h3> @@ -274,11 +274,11 @@ <span class="kd">private</span> <span class="n">String</span> <span class="n">field</span><span class="o">;</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="n">Bson</span> <span class="n">createFilter</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">Bson</span> <span class="nf">createFilter</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> <span class="k">return</span> <span class="n">Filters</span><span class="o">.</span><span class="na">eq</span><span class="o">(</span><span class="n">field</span><span class="o">,</span> <span class="n">tuple</span><span class="o">.</span><span class="na">getValueByField</span><span class="o">(</span><span class="n">field</span><span class="o">));</span> <span class="o">}</span> - <span class="kd">public</span> <span class="n">SimpleQueryFilterCreator</span> <span class="n">withField</span><span class="o">(</span><span class="n">String</span> <span class="n">field</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">SimpleQueryFilterCreator</span> <span class="nf">withField</span><span class="o">(</span><span class="n">String</span> <span class="n">field</span><span class="o">)</span> <span class="o">{</span> <span class="k">this</span><span class="o">.</span><span class="na">field</span> <span class="o">=</span> <span class="n">field</span><span class="o">;</span> <span class="k">return</span> <span class="k">this</span><span class="o">;</span> <span class="o">}</span> @@ -305,7 +305,7 @@ <span class="n">QueryFilterCreator</span> <span class="n">updateQueryCreator</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QueryFilterCreator</span><span class="o">()</span> <span class="o">{</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="n">Bson</span> <span class="n">createFilter</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">Bson</span> <span class="nf">createFilter</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> <span class="k">return</span> <span class="n">Filters</span><span class="o">.</span><span class="na">gt</span><span class="o">(</span><span class="s">"count"</span><span class="o">,</span> <span class="mi">3</span><span class="o">);</span> <span class="o">}</span> <span class="o">};</span>
http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.0.4/storm-mqtt.html ---------------------------------------------------------------------- diff --git a/content/releases/1.0.4/storm-mqtt.html b/content/releases/1.0.4/storm-mqtt.html index 82c4481..8b9bad1 100644 --- a/content/releases/1.0.4/storm-mqtt.html +++ b/content/releases/1.0.4/storm-mqtt.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> @@ -189,7 +189,7 @@ temperature/humidity values to an MQTT topic.</p> <p>Open a terminal and execute the following command (change the path as necessary):</p> -<div class="highlight"><pre><code class="language-bash" data-lang="bash">java -cp examples/target/storm-mqtt-examples-<span class="k">*</span>-SNAPSHOT.jar org.apache.storm.mqtt.examples.MqttBrokerPublisher +<div class="highlight"><pre><code class="language-bash" data-lang="bash">java <span class="nt">-cp</span> examples/target/storm-mqtt-examples-<span class="k">*</span><span class="nt">-SNAPSHOT</span>.jar org.apache.storm.mqtt.examples.MqttBrokerPublisher </code></pre></div> <p><strong>Run the example toplogy</strong></p> @@ -197,7 +197,7 @@ temperature/humidity values to an MQTT topic.</p> publishing to a bolt that simply logs the information it receives.</p> <p>In a separate terminal, run the following command (Note that the <code>storm</code> executable must be on your PATH):</p> -<div class="highlight"><pre><code class="language-bash" data-lang="bash">storm jar ./examples/target/storm-mqtt-examples-<span class="k">*</span>-SNAPSHOT.jar org.apache.storm.flux.Flux ./examples/src/main/flux/sample.yaml --local +<div class="highlight"><pre><code class="language-bash" data-lang="bash">storm jar ./examples/target/storm-mqtt-examples-<span class="k">*</span><span class="nt">-SNAPSHOT</span>.jar org.apache.storm.flux.Flux ./examples/src/main/flux/sample.yaml <span class="nt">--local</span> </code></pre></div> <p>You should see data from MQTT being logged by the bolt:</p> <div class="highlight"><pre><code class="language-" data-lang="">27020 [Thread-17-log-executor[3 3]] INFO o.a.s.f.w.b.LogInfoBolt - {user=tgoetz, deviceId=1234, location=office, temperature=67.0, humidity=65.0} @@ -269,9 +269,9 @@ man-made disasters and network partitions. Incineration and destruction happens. <code>org.apache.storm.mqtt.MqttMessageMapper</code> interface, which looks like this:</p> <div class="highlight"><pre><code class="language-java" data-lang="java"><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">MqttMessageMapper</span> <span class="kd">extends</span> <span class="n">Serializable</span> <span class="o">{</span> - <span class="n">Values</span> <span class="n">toValues</span><span class="o">(</span><span class="n">MqttMessage</span> <span class="n">message</span><span class="o">);</span> + <span class="n">Values</span> <span class="nf">toValues</span><span class="o">(</span><span class="n">MqttMessage</span> <span class="n">message</span><span class="o">);</span> - <span class="n">Fields</span> <span class="n">outputFields</span><span class="o">();</span> + <span class="n">Fields</span> <span class="nf">outputFields</span><span class="o">();</span> <span class="o">}</span> </code></pre></div> <p>The <code>MqttMessage</code> class contains the topic to which the message was published (<code>String</code>) and the message payload @@ -287,17 +287,17 @@ the message topic and payload:</p> <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">Logger</span> <span class="n">LOG</span> <span class="o">=</span> <span class="n">LoggerFactory</span><span class="o">.</span><span class="na">getLogger</span><span class="o">(</span><span class="n">CustomMessageMapper</span><span class="o">.</span><span class="na">class</span><span class="o">);</span> - <span class="kd">public</span> <span class="n">Values</span> <span class="n">toValues</span><span class="o">(</span><span class="n">MqttMessage</span> <span class="n">message</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">Values</span> <span class="nf">toValues</span><span class="o">(</span><span class="n">MqttMessage</span> <span class="n">message</span><span class="o">)</span> <span class="o">{</span> <span class="n">String</span> <span class="n">topic</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="na">getTopic</span><span class="o">();</span> <span class="n">String</span><span class="o">[]</span> <span class="n">topicElements</span> <span class="o">=</span> <span class="n">topic</span><span class="o">.</span><span class="na">split</span><span class="o">(</span><span class="s">"/"</span><span class="o">);</span> <span class="n">String</span><span class="o">[]</span> <span class="n">payloadElements</span> <span class="o">=</span> <span class="k">new</span> <span class="n">String</span><span class="o">(</span><span class="n">message</span><span class="o">.</span><span class="na">getMessage</span><span class="o">()).</span><span class="na">split</span><span class="o">(</span><span class="s">"/"</span><span class="o">);</span> - <span class="k">return</span> <span class="k">new</span> <span class="n">Values</span><span class="o">(</span><span class="n">topicElements</span><span class="o">[</span><span class="mi">2</span><span class="o">],</span> <span class="n">topicElements</span><span class="o">[</span><span class="mi">4</span><span class="o">],</span> <span class="n">topicElements</span><span class="o">[</span><span class="mi">3</span><span class="o">],</span> <span class="n">Float</span><span class="o">.</span><span class="na">parseFloat</span><span class="o">(</span><span class="n">payloadElements</span><span class="o">[</span><span class="mi">0</span><span class="o">]),</span> + <span class="k">return</span> <span class="k">new</span> <span class="nf">Values</span><span class="o">(</span><span class="n">topicElements</span><span class="o">[</span><span class="mi">2</span><span class="o">],</span> <span class="n">topicElements</span><span class="o">[</span><span class="mi">4</span><span class="o">],</span> <span class="n">topicElements</span><span class="o">[</span><span class="mi">3</span><span class="o">],</span> <span class="n">Float</span><span class="o">.</span><span class="na">parseFloat</span><span class="o">(</span><span class="n">payloadElements</span><span class="o">[</span><span class="mi">0</span><span class="o">]),</span> <span class="n">Float</span><span class="o">.</span><span class="na">parseFloat</span><span class="o">(</span><span class="n">payloadElements</span><span class="o">[</span><span class="mi">1</span><span class="o">]));</span> <span class="o">}</span> - <span class="kd">public</span> <span class="n">Fields</span> <span class="n">outputFields</span><span class="o">()</span> <span class="o">{</span> - <span class="k">return</span> <span class="k">new</span> <span class="n">Fields</span><span class="o">(</span><span class="s">"user"</span><span class="o">,</span> <span class="s">"deviceId"</span><span class="o">,</span> <span class="s">"location"</span><span class="o">,</span> <span class="s">"temperature"</span><span class="o">,</span> <span class="s">"humidity"</span><span class="o">);</span> + <span class="kd">public</span> <span class="n">Fields</span> <span class="nf">outputFields</span><span class="o">()</span> <span class="o">{</span> + <span class="k">return</span> <span class="k">new</span> <span class="nf">Fields</span><span class="o">(</span><span class="s">"user"</span><span class="o">,</span> <span class="s">"deviceId"</span><span class="o">,</span> <span class="s">"location"</span><span class="o">,</span> <span class="s">"temperature"</span><span class="o">,</span> <span class="s">"humidity"</span><span class="o">);</span> <span class="o">}</span> <span class="o">}</span> </code></pre></div> @@ -307,16 +307,16 @@ the message topic and payload:</p> (topic/payload). This is done by implementing the <code>org.apache.storm.mqtt.MqttTupleMapper</code> interface:</p> <div class="highlight"><pre><code class="language-java" data-lang="java"><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">MqttTupleMapper</span> <span class="kd">extends</span> <span class="n">Serializable</span><span class="o">{</span> - <span class="n">MqttMessage</span> <span class="n">toMessage</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">);</span> + <span class="n">MqttMessage</span> <span class="nf">toMessage</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">);</span> <span class="o">}</span> </code></pre></div> <p>For example, a simple <code>MqttTupleMapper</code> implementation might look like this:</p> <div class="highlight"><pre><code class="language-java" data-lang="java"><span class="kd">public</span> <span class="kd">class</span> <span class="nc">MyTupleMapper</span> <span class="kd">implements</span> <span class="n">MqttTupleMapper</span> <span class="o">{</span> - <span class="kd">public</span> <span class="n">MqttMessage</span> <span class="n">toMessage</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">MqttMessage</span> <span class="nf">toMessage</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> <span class="n">String</span> <span class="n">topic</span> <span class="o">=</span> <span class="s">"users/"</span> <span class="o">+</span> <span class="n">tuple</span><span class="o">.</span><span class="na">getStringByField</span><span class="o">(</span><span class="s">"userId"</span><span class="o">)</span> <span class="o">+</span> <span class="s">"/"</span> <span class="o">+</span> <span class="n">tuple</span><span class="o">.</span><span class="na">getStringByField</span><span class="o">(</span><span class="s">"device"</span><span class="o">);</span> <span class="kt">byte</span><span class="o">[]</span> <span class="n">payload</span> <span class="o">=</span> <span class="n">tuple</span><span class="o">.</span><span class="na">getStringByField</span><span class="o">(</span><span class="s">"message"</span><span class="o">).</span><span class="na">getBytes</span><span class="o">();</span> - <span class="k">return</span> <span class="k">new</span> <span class="n">MqttMessage</span><span class="o">(</span><span class="n">topic</span><span class="o">,</span> <span class="n">payload</span><span class="o">);</span> + <span class="k">return</span> <span class="k">new</span> <span class="nf">MqttMessage</span><span class="o">(</span><span class="n">topic</span><span class="o">,</span> <span class="n">payload</span><span class="o">);</span> <span class="o">}</span> <span class="o">}</span> </code></pre></div> @@ -337,48 +337,48 @@ something like the following:</p> <h3 id="using-flux">Using Flux</h3> <p>The following Flux YAML configuration creates the toplolgy used in the example:</p> -<div class="highlight"><pre><code class="language-yaml" data-lang="yaml"><span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-topology"</span> +<div class="highlight"><pre><code class="language-yaml" data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-topology"</span> -<span class="s">components</span><span class="pi">:</span> +<span class="na">components</span><span class="pi">:</span> <span class="c1">########## MQTT Spout Config ############</span> - <span class="pi">-</span> <span class="s">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-type"</span> - <span class="s">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.examples.CustomMessageMapper"</span> - - <span class="pi">-</span> <span class="s">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-options"</span> - <span class="s">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.common.MqttOptions"</span> - <span class="s">properties</span><span class="pi">:</span> - <span class="pi">-</span> <span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">url"</span> - <span class="s">value</span><span class="pi">:</span> <span class="s2">"</span><span class="s">tcp://localhost:1883"</span> - <span class="pi">-</span> <span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">topics"</span> - <span class="s">value</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-type"</span> + <span class="na">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.examples.CustomMessageMapper"</span> + + <span class="pi">-</span> <span class="na">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-options"</span> + <span class="na">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.common.MqttOptions"</span> + <span class="na">properties</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">url"</span> + <span class="na">value</span><span class="pi">:</span> <span class="s2">"</span><span class="s">tcp://localhost:1883"</span> + <span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">topics"</span> + <span class="na">value</span><span class="pi">:</span> <span class="pi">-</span> <span class="s2">"</span><span class="s">/users/tgoetz/#"</span> <span class="c1"># topology configuration</span> -<span class="s">config</span><span class="pi">:</span> +<span class="na">config</span><span class="pi">:</span> <span class="s">topology.workers</span><span class="pi">:</span> <span class="s">1</span> <span class="s">topology.max.spout.pending</span><span class="pi">:</span> <span class="s">1000</span> <span class="c1"># spout definitions</span> -<span class="s">spouts</span><span class="pi">:</span> - <span class="pi">-</span> <span class="s">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-spout"</span> - <span class="s">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.spout.MqttSpout"</span> - <span class="s">constructorArgs</span><span class="pi">:</span> - <span class="pi">-</span> <span class="s">ref</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-type"</span> - <span class="pi">-</span> <span class="s">ref</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-options"</span> - <span class="s">parallelism</span><span class="pi">:</span> <span class="s">1</span> +<span class="na">spouts</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-spout"</span> + <span class="na">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.spout.MqttSpout"</span> + <span class="na">constructorArgs</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">ref</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-type"</span> + <span class="pi">-</span> <span class="na">ref</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-options"</span> + <span class="na">parallelism</span><span class="pi">:</span> <span class="s">1</span> <span class="c1"># bolt definitions</span> -<span class="s">bolts</span><span class="pi">:</span> - <span class="pi">-</span> <span class="s">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">log"</span> - <span class="s">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.flux.wrappers.bolts.LogInfoBolt"</span> - <span class="s">parallelism</span><span class="pi">:</span> <span class="s">1</span> +<span class="na">bolts</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">log"</span> + <span class="na">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.flux.wrappers.bolts.LogInfoBolt"</span> + <span class="na">parallelism</span><span class="pi">:</span> <span class="s">1</span> -<span class="s">streams</span><span class="pi">:</span> - <span class="pi">-</span> <span class="s">from</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-spout"</span> - <span class="s">to</span><span class="pi">:</span> <span class="s2">"</span><span class="s">log"</span> - <span class="s">grouping</span><span class="pi">:</span> - <span class="s">type</span><span class="pi">:</span> <span class="s">SHUFFLE</span> +<span class="na">streams</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">from</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-spout"</span> + <span class="na">to</span><span class="pi">:</span> <span class="s2">"</span><span class="s">log"</span> + <span class="na">grouping</span><span class="pi">:</span> + <span class="na">type</span><span class="pi">:</span> <span class="s">SHUFFLE</span> </code></pre></div> <h3 id="using-java">Using Java</h3> @@ -418,7 +418,7 @@ the algorithm, you can specify a specific protocol:</p> <p>The <code>MqttSpout</code>, <code>MqttBolt</code> and <code>MqttPublishFunction</code> all have constructors that take a <code>KeyStoreLoader</code> instance that is used to load the certificates required for TLS/SSL connections. For example:</p> -<div class="highlight"><pre><code class="language-java" data-lang="java"> <span class="kd">public</span> <span class="nf">MqttSpout</span><span class="p">(</span><span class="n">MqttMessageMapper</span> <span class="n">type</span><span class="o">,</span> <span class="n">MqttOptions</span> <span class="n">options</span><span class="o">,</span> <span class="n">KeyStoreLoader</span> <span class="n">keyStoreLoader</span><span class="o">)</span> +<div class="highlight"><pre><code class="language-java" data-lang="java"> <span class="kd">public</span> <span class="nf">MqttSpout</span><span class="o">(</span><span class="n">MqttMessageMapper</span> <span class="n">type</span><span class="o">,</span> <span class="n">MqttOptions</span> <span class="n">options</span><span class="o">,</span> <span class="n">KeyStoreLoader</span> <span class="n">keyStoreLoader</span><span class="o">)</span> </code></pre></div> <p>The <code>DefaultKeyStoreLoader</code> class can be used to load certificates from the local filesystem. Note that the keystore/truststore need to be available on all worker nodes where the spout/bolt might be executed. To use @@ -434,64 +434,64 @@ keystore/truststore need to be available on all worker nodes where the spout/bol <span class="c1">//...</span> </code></pre></div> <p>SSL/TLS can also be configured using Flux:</p> -<div class="highlight"><pre><code class="language-yaml" data-lang="yaml"><span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-topology"</span> +<div class="highlight"><pre><code class="language-yaml" data-lang="yaml"><span class="na">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-topology"</span> -<span class="s">components</span><span class="pi">:</span> +<span class="na">components</span><span class="pi">:</span> <span class="c1">########## MQTT Spout Config ############</span> - <span class="pi">-</span> <span class="s">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-type"</span> - <span class="s">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.examples.CustomMessageMapper"</span> + <span class="pi">-</span> <span class="na">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-type"</span> + <span class="na">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.examples.CustomMessageMapper"</span> - <span class="pi">-</span> <span class="s">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">keystore-loader"</span> - <span class="s">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.ssl.DefaultKeyStoreLoader"</span> - <span class="s">constructorArgs</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">keystore-loader"</span> + <span class="na">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.ssl.DefaultKeyStoreLoader"</span> + <span class="na">constructorArgs</span><span class="pi">:</span> <span class="pi">-</span> <span class="s2">"</span><span class="s">keystore.jks"</span> <span class="pi">-</span> <span class="s2">"</span><span class="s">truststore.jks"</span> - <span class="s">properties</span><span class="pi">:</span> - <span class="pi">-</span> <span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">keyPassword"</span> - <span class="s">value</span><span class="pi">:</span> <span class="s2">"</span><span class="s">password"</span> - <span class="pi">-</span> <span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">keyStorePassword"</span> - <span class="s">value</span><span class="pi">:</span> <span class="s2">"</span><span class="s">password"</span> - <span class="pi">-</span> <span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">trustStorePassword"</span> - <span class="s">value</span><span class="pi">:</span> <span class="s2">"</span><span class="s">password"</span> - - <span class="pi">-</span> <span class="s">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-options"</span> - <span class="s">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.common.MqttOptions"</span> - <span class="s">properties</span><span class="pi">:</span> - <span class="pi">-</span> <span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">url"</span> - <span class="s">value</span><span class="pi">:</span> <span class="s2">"</span><span class="s">ssl://raspberrypi.local:8883"</span> - <span class="pi">-</span> <span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">topics"</span> - <span class="s">value</span><span class="pi">:</span> + <span class="na">properties</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">keyPassword"</span> + <span class="na">value</span><span class="pi">:</span> <span class="s2">"</span><span class="s">password"</span> + <span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">keyStorePassword"</span> + <span class="na">value</span><span class="pi">:</span> <span class="s2">"</span><span class="s">password"</span> + <span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">trustStorePassword"</span> + <span class="na">value</span><span class="pi">:</span> <span class="s2">"</span><span class="s">password"</span> + + <span class="pi">-</span> <span class="na">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-options"</span> + <span class="na">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.common.MqttOptions"</span> + <span class="na">properties</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">url"</span> + <span class="na">value</span><span class="pi">:</span> <span class="s2">"</span><span class="s">ssl://raspberrypi.local:8883"</span> + <span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">topics"</span> + <span class="na">value</span><span class="pi">:</span> <span class="pi">-</span> <span class="s2">"</span><span class="s">/users/tgoetz/#"</span> <span class="c1"># topology configuration</span> -<span class="s">config</span><span class="pi">:</span> +<span class="na">config</span><span class="pi">:</span> <span class="s">topology.workers</span><span class="pi">:</span> <span class="s">1</span> <span class="s">topology.max.spout.pending</span><span class="pi">:</span> <span class="s">1000</span> <span class="c1"># spout definitions</span> -<span class="s">spouts</span><span class="pi">:</span> - <span class="pi">-</span> <span class="s">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-spout"</span> - <span class="s">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.spout.MqttSpout"</span> - <span class="s">constructorArgs</span><span class="pi">:</span> - <span class="pi">-</span> <span class="s">ref</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-type"</span> - <span class="pi">-</span> <span class="s">ref</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-options"</span> - <span class="pi">-</span> <span class="s">ref</span><span class="pi">:</span> <span class="s2">"</span><span class="s">keystore-loader"</span> - <span class="s">parallelism</span><span class="pi">:</span> <span class="s">1</span> +<span class="na">spouts</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-spout"</span> + <span class="na">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.mqtt.spout.MqttSpout"</span> + <span class="na">constructorArgs</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">ref</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-type"</span> + <span class="pi">-</span> <span class="na">ref</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-options"</span> + <span class="pi">-</span> <span class="na">ref</span><span class="pi">:</span> <span class="s2">"</span><span class="s">keystore-loader"</span> + <span class="na">parallelism</span><span class="pi">:</span> <span class="s">1</span> <span class="c1"># bolt definitions</span> -<span class="s">bolts</span><span class="pi">:</span> +<span class="na">bolts</span><span class="pi">:</span> - <span class="pi">-</span> <span class="s">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">log"</span> - <span class="s">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.flux.wrappers.bolts.LogInfoBolt"</span> - <span class="s">parallelism</span><span class="pi">:</span> <span class="s">1</span> + <span class="pi">-</span> <span class="na">id</span><span class="pi">:</span> <span class="s2">"</span><span class="s">log"</span> + <span class="na">className</span><span class="pi">:</span> <span class="s2">"</span><span class="s">org.apache.storm.flux.wrappers.bolts.LogInfoBolt"</span> + <span class="na">parallelism</span><span class="pi">:</span> <span class="s">1</span> -<span class="s">streams</span><span class="pi">:</span> +<span class="na">streams</span><span class="pi">:</span> - <span class="pi">-</span> <span class="s">from</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-spout"</span> - <span class="s">to</span><span class="pi">:</span> <span class="s2">"</span><span class="s">log"</span> - <span class="s">grouping</span><span class="pi">:</span> - <span class="s">type</span><span class="pi">:</span> <span class="s">SHUFFLE</span> + <span class="pi">-</span> <span class="na">from</span><span class="pi">:</span> <span class="s2">"</span><span class="s">mqtt-spout"</span> + <span class="na">to</span><span class="pi">:</span> <span class="s2">"</span><span class="s">log"</span> + <span class="na">grouping</span><span class="pi">:</span> + <span class="na">type</span><span class="pi">:</span> <span class="s">SHUFFLE</span> </code></pre></div> <h2 id="committer-sponsors">Committer Sponsors</h2> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.0.4/storm-redis.html ---------------------------------------------------------------------- diff --git a/content/releases/1.0.4/storm-redis.html b/content/releases/1.0.4/storm-redis.html index 28c104e..3c2391a 100644 --- a/content/releases/1.0.4/storm-redis.html +++ b/content/releases/1.0.4/storm-redis.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> @@ -192,13 +192,13 @@ <span class="kd">private</span> <span class="n">RedisDataTypeDescription</span> <span class="n">description</span><span class="o">;</span> <span class="kd">private</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">hashKey</span> <span class="o">=</span> <span class="s">"wordCount"</span><span class="o">;</span> - <span class="kd">public</span> <span class="n">WordCountRedisLookupMapper</span><span class="o">()</span> <span class="o">{</span> + <span class="kd">public</span> <span class="nf">WordCountRedisLookupMapper</span><span class="o">()</span> <span class="o">{</span> <span class="n">description</span> <span class="o">=</span> <span class="k">new</span> <span class="n">RedisDataTypeDescription</span><span class="o">(</span> <span class="n">RedisDataTypeDescription</span><span class="o">.</span><span class="na">RedisDataType</span><span class="o">.</span><span class="na">HASH</span><span class="o">,</span> <span class="n">hashKey</span><span class="o">);</span> <span class="o">}</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="n">List</span><span class="o"><</span><span class="n">Values</span><span class="o">></span> <span class="n">toTuple</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">input</span><span class="o">,</span> <span class="n">Object</span> <span class="n">value</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">List</span><span class="o"><</span><span class="n">Values</span><span class="o">></span> <span class="nf">toTuple</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">input</span><span class="o">,</span> <span class="n">Object</span> <span class="n">value</span><span class="o">)</span> <span class="o">{</span> <span class="n">String</span> <span class="n">member</span> <span class="o">=</span> <span class="n">getKeyFromTuple</span><span class="o">(</span><span class="n">input</span><span class="o">);</span> <span class="n">List</span><span class="o"><</span><span class="n">Values</span><span class="o">></span> <span class="n">values</span> <span class="o">=</span> <span class="n">Lists</span><span class="o">.</span><span class="na">newArrayList</span><span class="o">();</span> <span class="n">values</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">Values</span><span class="o">(</span><span class="n">member</span><span class="o">,</span> <span class="n">value</span><span class="o">));</span> @@ -206,22 +206,22 @@ <span class="o">}</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="kt">void</span> <span class="n">declareOutputFields</span><span class="o">(</span><span class="n">OutputFieldsDeclarer</span> <span class="n">declarer</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="kt">void</span> <span class="nf">declareOutputFields</span><span class="o">(</span><span class="n">OutputFieldsDeclarer</span> <span class="n">declarer</span><span class="o">)</span> <span class="o">{</span> <span class="n">declarer</span><span class="o">.</span><span class="na">declare</span><span class="o">(</span><span class="k">new</span> <span class="n">Fields</span><span class="o">(</span><span class="s">"wordName"</span><span class="o">,</span> <span class="s">"count"</span><span class="o">));</span> <span class="o">}</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="n">RedisDataTypeDescription</span> <span class="n">getDataTypeDescription</span><span class="o">()</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">RedisDataTypeDescription</span> <span class="nf">getDataTypeDescription</span><span class="o">()</span> <span class="o">{</span> <span class="k">return</span> <span class="n">description</span><span class="o">;</span> <span class="o">}</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="n">String</span> <span class="n">getKeyFromTuple</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">String</span> <span class="nf">getKeyFromTuple</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> <span class="k">return</span> <span class="n">tuple</span><span class="o">.</span><span class="na">getStringByField</span><span class="o">(</span><span class="s">"word"</span><span class="o">);</span> <span class="o">}</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="n">String</span> <span class="n">getValueFromTuple</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">String</span> <span class="nf">getValueFromTuple</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> <span class="k">return</span> <span class="kc">null</span><span class="o">;</span> <span class="o">}</span> <span class="o">}</span> @@ -238,23 +238,23 @@ <span class="kd">private</span> <span class="n">RedisDataTypeDescription</span> <span class="n">description</span><span class="o">;</span> <span class="kd">private</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">hashKey</span> <span class="o">=</span> <span class="s">"wordCount"</span><span class="o">;</span> - <span class="kd">public</span> <span class="n">WordCountStoreMapper</span><span class="o">()</span> <span class="o">{</span> + <span class="kd">public</span> <span class="nf">WordCountStoreMapper</span><span class="o">()</span> <span class="o">{</span> <span class="n">description</span> <span class="o">=</span> <span class="k">new</span> <span class="n">RedisDataTypeDescription</span><span class="o">(</span> <span class="n">RedisDataTypeDescription</span><span class="o">.</span><span class="na">RedisDataType</span><span class="o">.</span><span class="na">HASH</span><span class="o">,</span> <span class="n">hashKey</span><span class="o">);</span> <span class="o">}</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="n">RedisDataTypeDescription</span> <span class="n">getDataTypeDescription</span><span class="o">()</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">RedisDataTypeDescription</span> <span class="nf">getDataTypeDescription</span><span class="o">()</span> <span class="o">{</span> <span class="k">return</span> <span class="n">description</span><span class="o">;</span> <span class="o">}</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="n">String</span> <span class="n">getKeyFromTuple</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">String</span> <span class="nf">getKeyFromTuple</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> <span class="k">return</span> <span class="n">tuple</span><span class="o">.</span><span class="na">getStringByField</span><span class="o">(</span><span class="s">"word"</span><span class="o">);</span> <span class="o">}</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="n">String</span> <span class="n">getValueFromTuple</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="n">String</span> <span class="nf">getValueFromTuple</span><span class="o">(</span><span class="n">ITuple</span> <span class="n">tuple</span><span class="o">)</span> <span class="o">{</span> <span class="k">return</span> <span class="n">tuple</span><span class="o">.</span><span class="na">getStringByField</span><span class="o">(</span><span class="s">"count"</span><span class="o">);</span> <span class="o">}</span> <span class="o">}</span> @@ -272,16 +272,16 @@ <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">Logger</span> <span class="n">LOG</span> <span class="o">=</span> <span class="n">LoggerFactory</span><span class="o">.</span><span class="na">getLogger</span><span class="o">(</span><span class="n">LookupWordTotalCountBolt</span><span class="o">.</span><span class="na">class</span><span class="o">);</span> <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">Random</span> <span class="n">RANDOM</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Random</span><span class="o">();</span> - <span class="kd">public</span> <span class="n">LookupWordTotalCountBolt</span><span class="o">(</span><span class="n">JedisPoolConfig</span> <span class="n">config</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="nf">LookupWordTotalCountBolt</span><span class="o">(</span><span class="n">JedisPoolConfig</span> <span class="n">config</span><span class="o">)</span> <span class="o">{</span> <span class="kd">super</span><span class="o">(</span><span class="n">config</span><span class="o">);</span> <span class="o">}</span> - <span class="kd">public</span> <span class="n">LookupWordTotalCountBolt</span><span class="o">(</span><span class="n">JedisClusterConfig</span> <span class="n">config</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="nf">LookupWordTotalCountBolt</span><span class="o">(</span><span class="n">JedisClusterConfig</span> <span class="n">config</span><span class="o">)</span> <span class="o">{</span> <span class="kd">super</span><span class="o">(</span><span class="n">config</span><span class="o">);</span> <span class="o">}</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="kt">void</span> <span class="n">execute</span><span class="o">(</span><span class="n">Tuple</span> <span class="n">input</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="kt">void</span> <span class="nf">execute</span><span class="o">(</span><span class="n">Tuple</span> <span class="n">input</span><span class="o">)</span> <span class="o">{</span> <span class="n">JedisCommands</span> <span class="n">jedisCommands</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span> <span class="k">try</span> <span class="o">{</span> <span class="n">jedisCommands</span> <span class="o">=</span> <span class="n">getInstance</span><span class="o">();</span> @@ -308,7 +308,7 @@ <span class="o">}</span> <span class="nd">@Override</span> - <span class="kd">public</span> <span class="kt">void</span> <span class="n">declareOutputFields</span><span class="o">(</span><span class="n">OutputFieldsDeclarer</span> <span class="n">declarer</span><span class="o">)</span> <span class="o">{</span> + <span class="kd">public</span> <span class="kt">void</span> <span class="nf">declareOutputFields</span><span class="o">(</span><span class="n">OutputFieldsDeclarer</span> <span class="n">declarer</span><span class="o">)</span> <span class="o">{</span> <span class="c1">// wordName, count</span> <span class="n">declarer</span><span class="o">.</span><span class="na">declare</span><span class="o">(</span><span class="k">new</span> <span class="n">Fields</span><span class="o">(</span><span class="s">"wordName"</span><span class="o">,</span> <span class="s">"count"</span><span class="o">));</span> <span class="o">}</span> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.0.4/storm-solr.html ---------------------------------------------------------------------- diff --git a/content/releases/1.0.4/storm-solr.html b/content/releases/1.0.4/storm-solr.html index 143ab63..114efc6 100644 --- a/content/releases/1.0.4/storm-solr.html +++ b/content/releases/1.0.4/storm-solr.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> @@ -174,7 +174,7 @@ responsible for making the update calls to Solr, thus updating the index of the describe in detail the two key components of the Storm Solr integration, the <code>SolrUpdateBolt</code>, and the <code>Mappers</code>, <code>SolrFieldsMapper</code>, and <code>SolrJsonMapper</code>.</p> <h2 id="storm-bolt-with-json-mapper-and-count-based-commit-strategy">Storm Bolt With JSON Mapper and Count Based Commit Strategy</h2> -<div class="highlight"><pre><code class="language-java" data-lang="java"> <span class="k">new</span> <span class="nf">SolrUpdateBolt</span><span class="p">(</span><span class="n">solrConfig</span><span class="o">,</span> <span class="n">solrMapper</span><span class="o">,</span> <span class="n">solrCommitStgy</span><span class="o">)</span> +<div class="highlight"><pre><code class="language-java" data-lang="java"> <span class="k">new</span> <span class="n">SolrUpdateBolt</span><span class="o">(</span><span class="n">solrConfig</span><span class="o">,</span> <span class="n">solrMapper</span><span class="o">,</span> <span class="n">solrCommitStgy</span><span class="o">)</span> <span class="c1">// zkHostString for Solr 'gettingstarted' example</span> <span class="n">SolrConfig</span> <span class="n">solrConfig</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SolrConfig</span><span class="o">(</span><span class="s">"127.0.0.1:9983"</span><span class="o">);</span> @@ -186,7 +186,7 @@ describe in detail the two key components of the Storm Solr integration, the <co <span class="n">SolrCommitStrategy</span> <span class="n">solrCommitStgy</span> <span class="o">=</span> <span class="k">new</span> <span class="n">CountBasedCommit</span><span class="o">(</span><span class="mi">5</span><span class="o">);</span> </code></pre></div> <h2 id="trident-topology-with-fields-mapper">Trident Topology With Fields Mapper</h2> -<div class="highlight"><pre><code class="language-java" data-lang="java"> <span class="k">new</span> <span class="nf">SolrStateFactory</span><span class="p">(</span><span class="n">solrConfig</span><span class="o">,</span> <span class="n">solrMapper</span><span class="o">);</span> +<div class="highlight"><pre><code class="language-java" data-lang="java"> <span class="k">new</span> <span class="n">SolrStateFactory</span><span class="o">(</span><span class="n">solrConfig</span><span class="o">,</span> <span class="n">solrMapper</span><span class="o">);</span> <span class="c1">// zkHostString for Solr 'gettingstarted' example</span> <span class="n">SolrConfig</span> <span class="n">solrConfig</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SolrConfig</span><span class="o">(</span><span class="s">"127.0.0.1:9983"</span><span class="o">);</span> @@ -249,7 +249,7 @@ that is part of the <code>SolrFieldsMapper.Builder</code> builder class. </p> field separates each value with the token % instead of the default | . To use the default token you can ommit the call to the method <code>setMultiValueFieldToken</code>.</p> <div class="highlight"><pre><code class="language-java" data-lang="java"> <span class="k">new</span> <span class="n">SolrFieldsMapper</span><span class="o">.</span><span class="na">Builder</span><span class="o">(</span> - <span class="k">new</span> <span class="n">RestJsonSchemaBuilder</span><span class="o">(</span><span class="s">"localhost"</span><span class="o">,</span> <span class="s">"8983"</span><span class="o">,</span> <span class="s">"gettingstarted"</span><span class="o">),</span> <span class="s">"gettingstarted"</span><span class="o">)</span> + <span class="k">new</span> <span class="nf">RestJsonSchemaBuilder</span><span class="o">(</span><span class="s">"localhost"</span><span class="o">,</span> <span class="s">"8983"</span><span class="o">,</span> <span class="s">"gettingstarted"</span><span class="o">),</span> <span class="s">"gettingstarted"</span><span class="o">)</span> <span class="o">.</span><span class="na">setMultiValueFieldToken</span><span class="o">(</span><span class="s">"%"</span><span class="o">).</span><span class="na">build</span><span class="o">();</span> </code></pre></div> <h1 id="build-and-run-bundled-examples">Build And Run Bundled Examples</h1> @@ -321,9 +321,9 @@ and then generate an uber jar with all the dependencies.</p> <p>Querying Solr for these patterns, you will see the values that have been indexed by the Storm Apache Solr integration: </p> -<p>curl -X GET -H "Content-type:application/json" -H "Accept:application/json" <a href="http://localhost:8983/solr/gettingstarted_shard1_replica2/select?q=*id_fields_test_val*&wt=json&indent=true">http://localhost:8983/solr/gettingstarted_shard1_replica2/select?q=*id_fields_test_val*&wt=json&indent=true</a></p> +<p>curl -X GET -H "Content-type:application/json" -H "Accept:application/json" <a href="http://localhost:8983/solr/gettingstarted_shard1_replica2/select?q=*id_fields_test_val*&wt=json&indent=true">http://localhost:8983/solr/gettingstarted_shard1_replica2/select?q=*id_fields_test_val*&wt=json&indent=true</a></p> -<p>curl -X GET -H "Content-type: application/json" -H "Accept: application/json" <a href="http://localhost:8983/solr/gettingstarted_shard1_replica2/select?q=*id_fields_test_val*&wt=json&indent=true">http://localhost:8983/solr/gettingstarted_shard1_replica2/select?q=*id_fields_test_val*&wt=json&indent=true</a></p> +<p>curl -X GET -H "Content-type: application/json" -H "Accept: application/json" <a href="http://localhost:8983/solr/gettingstarted_shard1_replica2/select?q=*id_fields_test_val*&wt=json&indent=true">http://localhost:8983/solr/gettingstarted_shard1_replica2/select?q=*id_fields_test_val*&wt=json&indent=true</a></p> <p>You can also see the results by opening the Apache Solr UI and pasting the <code>id</code> pattern in the <code>q</code> textbox in the queries page</p> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.0.4/storm-sql-internal.html ---------------------------------------------------------------------- diff --git a/content/releases/1.0.4/storm-sql-internal.html b/content/releases/1.0.4/storm-sql-internal.html index e4e6583..ca4ead9 100644 --- a/content/releases/1.0.4/storm-sql-internal.html +++ b/content/releases/1.0.4/storm-sql-internal.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.0.4/storm-sql.html ---------------------------------------------------------------------- diff --git a/content/releases/1.0.4/storm-sql.html b/content/releases/1.0.4/storm-sql.html index 2541fde..95f7c7d 100644 --- a/content/releases/1.0.4/storm-sql.html +++ b/content/releases/1.0.4/storm-sql.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.0.4/windows-users-guide.html ---------------------------------------------------------------------- diff --git a/content/releases/1.0.4/windows-users-guide.html b/content/releases/1.0.4/windows-users-guide.html index c13c3a2..2e7fbcb 100644 --- a/content/releases/1.0.4/windows-users-guide.html +++ b/content/releases/1.0.4/windows-users-guide.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.1.0/Acking-framework-implementation.html ---------------------------------------------------------------------- diff --git a/content/releases/1.1.0/Acking-framework-implementation.html b/content/releases/1.1.0/Acking-framework-implementation.html index 2f3b079..45e84a9 100644 --- a/content/releases/1.1.0/Acking-framework-implementation.html +++ b/content/releases/1.1.0/Acking-framework-implementation.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.1.0/Clojure-DSL.html ---------------------------------------------------------------------- diff --git a/content/releases/1.1.0/Clojure-DSL.html b/content/releases/1.1.0/Clojure-DSL.html index 964e865..0efdd8e 100644 --- a/content/releases/1.1.0/Clojure-DSL.html +++ b/content/releases/1.1.0/Clojure-DSL.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> @@ -289,7 +289,7 @@ </span><span class="p">(</span><span class="nf">execute</span><span class="w"> </span><span class="p">[</span><span class="n">tuple</span><span class="p">]</span><span class="w"> </span><span class="p">(</span><span class="k">let</span><span class="w"> </span><span class="p">[</span><span class="n">word</span><span class="w"> </span><span class="p">(</span><span class="nf">.getString</span><span class="w"> </span><span class="n">tuple</span><span class="w"> </span><span class="mi">0</span><span class="p">)]</span><span class="w"> </span><span class="p">(</span><span class="nf">swap!</span><span class="w"> </span><span class="n">counts</span><span class="w"> </span><span class="p">(</span><span class="nb">partial</span><span class="w"> </span><span class="nb">merge-with</span><span class="w"> </span><span class="nb">+</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="n">word</span><span class="w"> </span><span class="mi">1</span><span class="p">})</span><span class="w"> - </span><span class="p">(</span><span class="nf">emit-bolt!</span><span class="w"> </span><span class="n">collector</span><span class="w"> </span><span class="p">[</span><span class="n">word</span><span class="w"> </span><span class="p">(</span><span class="err">@</span><span class="n">counts</span><span class="w"> </span><span class="n">word</span><span class="p">)]</span><span class="w"> </span><span class="no">:anchor</span><span class="w"> </span><span class="n">tuple</span><span class="p">)</span><span class="w"> + </span><span class="p">(</span><span class="nf">emit-bolt!</span><span class="w"> </span><span class="n">collector</span><span class="w"> </span><span class="p">[</span><span class="n">word</span><span class="w"> </span><span class="p">(</span><span class="o">@</span><span class="n">counts</span><span class="w"> </span><span class="n">word</span><span class="p">)]</span><span class="w"> </span><span class="no">:anchor</span><span class="w"> </span><span class="n">tuple</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nf">ack!</span><span class="w"> </span><span class="n">collector</span><span class="w"> </span><span class="n">tuple</span><span class="p">)</span><span class="w"> </span><span class="p">)))))</span><span class="w"> </span></code></pre></div> @@ -351,10 +351,10 @@ </span><span class="p">(</span><span class="nf">emit-spout!</span><span class="w"> </span><span class="n">collector</span><span class="w"> </span><span class="p">[(</span><span class="nf">rand-nth</span><span class="w"> </span><span class="n">sentences</span><span class="p">)])</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nf">ack</span><span class="w"> </span><span class="p">[</span><span class="n">id</span><span class="p">]</span><span class="w"> - </span><span class="c1">;; You only need to define this method for reliable spouts -</span><span class="w"> </span><span class="c1">;; (such as one that reads off of a queue like Kestrel) -</span><span class="w"> </span><span class="c1">;; This is an unreliable spout, so it does nothing here -</span><span class="w"> </span><span class="p">))))</span><span class="w"> + </span><span class="c1">;; You only need to define this method for reliable spouts</span><span class="w"> + </span><span class="c1">;; (such as one that reads off of a queue like Kestrel)</span><span class="w"> + </span><span class="c1">;; This is an unreliable spout, so it does nothing here</span><span class="w"> + </span><span class="p">))))</span><span class="w"> </span></code></pre></div> <p>The implementation takes in as input the topology config, <code>TopologyContext</code>, and <code>SpoutOutputCollector</code>. The implementation returns an <code>ISpout</code> object. Here, the <code>nextTuple</code> function emits a random sentence from <code>sentences</code>. </p> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.1.0/Command-line-client.html ---------------------------------------------------------------------- diff --git a/content/releases/1.1.0/Command-line-client.html b/content/releases/1.1.0/Command-line-client.html index b1cdd69..ce58b68 100644 --- a/content/releases/1.1.0/Command-line-client.html +++ b/content/releases/1.1.0/Command-line-client.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.1.0/Common-patterns.html ---------------------------------------------------------------------- diff --git a/content/releases/1.1.0/Common-patterns.html b/content/releases/1.1.0/Common-patterns.html index 9da317f..1df8cde 100644 --- a/content/releases/1.1.0/Common-patterns.html +++ b/content/releases/1.1.0/Common-patterns.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.1.0/Concepts.html ---------------------------------------------------------------------- diff --git a/content/releases/1.1.0/Concepts.html b/content/releases/1.1.0/Concepts.html index e548b9d..d256144 100644 --- a/content/releases/1.1.0/Concepts.html +++ b/content/releases/1.1.0/Concepts.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.1.0/Configuration.html ---------------------------------------------------------------------- diff --git a/content/releases/1.1.0/Configuration.html b/content/releases/1.1.0/Configuration.html index 4b0d7cc..ea454b9 100644 --- a/content/releases/1.1.0/Configuration.html +++ b/content/releases/1.1.0/Configuration.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.1.0/Contributing-to-Storm.html ---------------------------------------------------------------------- diff --git a/content/releases/1.1.0/Contributing-to-Storm.html b/content/releases/1.1.0/Contributing-to-Storm.html index 57b8031..52076d5 100644 --- a/content/releases/1.1.0/Contributing-to-Storm.html +++ b/content/releases/1.1.0/Contributing-to-Storm.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div> http://git-wip-us.apache.org/repos/asf/storm-site/blob/a7a19afb/content/releases/1.1.0/Creating-a-new-Storm-project.html ---------------------------------------------------------------------- diff --git a/content/releases/1.1.0/Creating-a-new-Storm-project.html b/content/releases/1.1.0/Creating-a-new-Storm-project.html index a5c5e81..4b9240d 100644 --- a/content/releases/1.1.0/Creating-a-new-Storm-project.html +++ b/content/releases/1.1.0/Creating-a-new-Storm-project.html @@ -82,18 +82,16 @@ - <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> - + <li><a href="/releases/1.1.0/index.html">1.1.0</a></li> + <li><a href="/releases/1.0.4/index.html">1.0.4</a></li> - - <li><a href="/releases/1.0.3/index.html">1.0.3</a></li> @@ -104,6 +102,8 @@ + + <li><a href="/releases/0.10.2/index.html">0.10.2</a></li> @@ -144,7 +144,7 @@ <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> </ul> </li> - <li><a href="/2017/09/15/storm105-released.html" id="news">News</a></li> + <li><a href="/2018/02/14/storm106-released.html" id="news">News</a></li> </ul> </nav> </div>