storm-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bo...@apache.org
Subject svn commit: r1691252 - in /storm/site/publish: ./ 2013/01/11/ documentation/
Date Wed, 15 Jul 2015 17:48:46 GMT
Author: bobby
Date: Wed Jul 15 17:48:45 2015
New Revision: 1691252

URL: http://svn.apache.org/r1691252
Log:
Updated site to match latest in git

Modified:
    storm/site/publish/2013/01/11/storm082-released.html
    storm/site/publish/documentation/Concepts.html
    storm/site/publish/documentation/Guaranteeing-message-processing.html
    storm/site/publish/documentation/Multilang-protocol.html
    storm/site/publish/documentation/Running-topologies-on-a-production-cluster.html
    storm/site/publish/documentation/Troubleshooting.html
    storm/site/publish/documentation/Tutorial.html
    storm/site/publish/documentation/Understanding-the-parallelism-of-a-Storm-topology.html
    storm/site/publish/feed.xml

Modified: storm/site/publish/2013/01/11/storm082-released.html
URL: http://svn.apache.org/viewvc/storm/site/publish/2013/01/11/storm082-released.html?rev=1691252&r1=1691251&r2=1691252&view=diff
==============================================================================
--- storm/site/publish/2013/01/11/storm082-released.html (original)
+++ storm/site/publish/2013/01/11/storm082-released.html Wed Jul 15 17:48:45 2015
@@ -87,7 +87,7 @@
 
 <p>You configure the isolation scheduler in the Nimbus configuration. Set &quot;storm.scheduler&quot;
to &quot;backtype.storm.scheduler.IsolationScheduler&quot;. Then, use the &quot;isolation.scheduler.machines&quot;
config to specify how many machines each topology should get. This config is a map from topology
name to number of machines. For example:</p>
 
-<script src="https://gist.github.com/4514691.js"></script>
+<p><script src="https://gist.github.com/4514691.js"></script></p>
 
 <p>Any topologies submitted to the cluster not listed there will not be isolated. Note
that there is no way for a user of Storm to affect their isolation settings – this is
only allowed by the administrator of the cluster (this is very much intentional).</p>
 

Modified: storm/site/publish/documentation/Concepts.html
URL: http://svn.apache.org/viewvc/storm/site/publish/documentation/Concepts.html?rev=1691252&r1=1691251&r2=1691252&view=diff
==============================================================================
--- storm/site/publish/documentation/Concepts.html (original)
+++ storm/site/publish/documentation/Concepts.html Wed Jul 15 17:48:45 2015
@@ -150,7 +150,7 @@
 
 <p>The main method in bolts is the <code>execute</code> method which takes
in as input a new tuple. Bolts emit new tuples using the <a href="/javadoc/apidocs/backtype/storm/task/OutputCollector.html">OutputCollector</a>
object. Bolts must call the <code>ack</code> method on the <code>OutputCollector</code>
for every tuple they process so that Storm knows when tuples are completed (and can eventually
determine that its safe to ack the original spout tuples). For the common case of processing
an input tuple, emitting 0 or more tuples based on that tuple, and then acking the input tuple,
Storm provides an <a href="/javadoc/apidocs/backtype/storm/topology/IBasicBolt.html">IBasicBolt</a>
interface which does the acking automatically.</p>
 
-<p>Its perfectly fine to launch new threads in bolts that do processing asynchronously.
<a href="/javadoc/apidocs/backtype/storm/task/OutputCollector.html">OutputCollector</a>
is thread-safe and can be called at any time.</p>
+<p>Please note that <a href="/javadoc/apidocs/backtype/storm/task/OutputCollector.html">OutputCollector</a>
is not thread-safe, and all emits, acks, and fails must happen on the same thread. Please
refer <a href="troubleshooting.html">Troubleshooting</a> for more details.</p>
 
 <p><strong>Resources:</strong></p>
 

Modified: storm/site/publish/documentation/Guaranteeing-message-processing.html
URL: http://svn.apache.org/viewvc/storm/site/publish/documentation/Guaranteeing-message-processing.html?rev=1691252&r1=1691251&r2=1691252&view=diff
==============================================================================
--- storm/site/publish/documentation/Guaranteeing-message-processing.html (original)
+++ storm/site/publish/documentation/Guaranteeing-message-processing.html Wed Jul 15 17:48:45
2015
@@ -191,7 +191,7 @@
 
 <h3 id="how-does-storm-implement-reliability-in-an-efficient-way?">How does Storm implement
reliability in an efficient way?</h3>
 
-<p>A Storm topology has a set of special &quot;acker&quot; tasks that track
the DAG of tuples for every spout tuple. When an acker sees that a DAG is complete, it sends
a message to the spout task that created the spout tuple to ack the message. You can set the
number of acker tasks for a topology in the topology configuration using <a href="/javadoc/apidocs/backtype/storm/Config.html#TOPOLOGY_ACKERS">Config.TOPOLOGY_ACKERS</a>.
Storm defaults TOPOLOGY_ACKERS to one task -- you will need to increase this number for topologies
processing large amounts of messages.</p>
+<p>A Storm topology has a set of special &quot;acker&quot; tasks that track
the DAG of tuples for every spout tuple. When an acker sees that a DAG is complete, it sends
a message to the spout task that created the spout tuple to ack the message. You can set the
number of acker executors for a topology in the topology configuration using <a href="/javadoc/apidocs/backtype/storm/Config.html#TOPOLOGY_ACKER_EXECUTORS">Config.TOPOLOGY_ACKER_EXECUTORS</a>.
Storm defaults TOPOLOGY_ACKER_EXECUTORS to be equal to the number of workers configured in
the topology -- you will need to increase this number for topologies processing large amounts
of messages.</p>
 
 <p>The best way to understand Storm&#39;s reliability implementation is to look
at the lifecycle of tuples and tuple DAGs. When a tuple is created in a topology, whether
in a spout or a bolt, it is given a random 64 bit id. These ids are used by ackers to track
the tuple DAG for every spout tuple.</p>
 

Modified: storm/site/publish/documentation/Multilang-protocol.html
URL: http://svn.apache.org/viewvc/storm/site/publish/documentation/Multilang-protocol.html?rev=1691252&r1=1691251&r2=1691252&view=diff
==============================================================================
--- storm/site/publish/documentation/Multilang-protocol.html (original)
+++ storm/site/publish/documentation/Multilang-protocol.html Wed Jul 15 17:48:45 2015
@@ -145,7 +145,7 @@ STDIN and STDOUT.</li>
             &quot;4&quot;: &quot;example-bolt2&quot;
         },
         &quot;taskid&quot;: 3,
-        // Everything below this line is only available in Storm 0.11.0+
+        // Everything below this line is only available in Storm 0.10.0+
         &quot;componentid&quot;: &quot;example-bolt&quot;
         &quot;stream-&gt;target-&gt;grouping&quot;: {
             &quot;default&quot;: {
@@ -161,6 +161,11 @@ STDIN and STDOUT.</li>
                 }
             }
         }
+        &quot;source-&gt;stream-&gt;fields&quot;: {
+            &quot;example-spout&quot;: {
+                &quot;default&quot;: [&quot;word&quot;]
+            }
+        }
     }
 }
 </code></pre></div>
@@ -168,7 +173,7 @@ STDIN and STDOUT.</li>
 the PID is 1234, so an empty file named 1234 is created in the directory. This
 file lets the supervisor know the PID so it can shutdown the process later on.</p>
 
-<p>As of Storm 0.11.0, the context sent by Storm to shell components has been
+<p>As of Storm 0.10.0, the context sent by Storm to shell components has been
 enhanced substantially to include all aspects of the topology context available
 to JVM components.  One key addition is the ability to determine a shell
 component&#39;s source and targets (i.e., inputs and outputs) in the topology via

Modified: storm/site/publish/documentation/Running-topologies-on-a-production-cluster.html
URL: http://svn.apache.org/viewvc/storm/site/publish/documentation/Running-topologies-on-a-production-cluster.html?rev=1691252&r1=1691251&r2=1691252&view=diff
==============================================================================
--- storm/site/publish/documentation/Running-topologies-on-a-production-cluster.html (original)
+++ storm/site/publish/documentation/Running-topologies-on-a-production-cluster.html Wed Jul
15 17:48:45 2015
@@ -123,7 +123,7 @@
 
 <ol>
 <li><strong>Config.TOPOLOGY_WORKERS</strong>: This sets the number of worker
processes to use to execute the topology. For example, if you set this to 25, there will be
25 Java processes across the cluster executing all the tasks. If you had a combined 150 parallelism
across all components in the topology, each worker process will have 6 tasks running within
it as threads.</li>
-<li><strong>Config.TOPOLOGY_ACKERS</strong>: This sets the number of tasks
that will track tuple trees and detect when a spout tuple has been fully processed. Ackers
are an integral part of Storm&#39;s reliability model and you can read more about them
on <a href="Guaranteeing-message-processing.html">Guaranteeing message processing</a>.</li>
+<li><strong>Config.TOPOLOGY_ACKER_EXECUTORS</strong>: This sets the number
of executors that will track tuple trees and detect when a spout tuple has been fully processed.
Ackers are an integral part of Storm&#39;s reliability model and you can read more about
them on <a href="Guaranteeing-message-processing.html">Guaranteeing message processing</a>.
By not setting this variable or setting it as null, Storm will set the number of acker executors
to be equal to the number of workers configured for this topology. If this variable is set
to 0, then Storm will immediately ack tuples as soon as they come off the spout, effectively
disabling reliability.</li>
 <li><strong>Config.TOPOLOGY_MAX_SPOUT_PENDING</strong>: This sets the maximum
number of spout tuples that can be pending on a single spout task at once (pending means the
tuple has not been acked or failed yet). It is highly recommended you set this config to prevent
queue explosion.</li>
 <li><strong>Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS</strong>: This is the
maximum amount of time a spout tuple has to be fully completed before it is considered failed.
This value defaults to 30 seconds, which is sufficient for most topologies. See <a href="Guaranteeing-message-processing.html">Guaranteeing
message processing</a> for more information on how Storm&#39;s reliability model
works.</li>
 <li><strong>Config.TOPOLOGY_SERIALIZATIONS</strong>: You can register more
serializers to Storm using this config so that you can use custom types within tuples.</li>

Modified: storm/site/publish/documentation/Troubleshooting.html
URL: http://svn.apache.org/viewvc/storm/site/publish/documentation/Troubleshooting.html?rev=1691252&r1=1691251&r2=1691252&view=diff
==============================================================================
--- storm/site/publish/documentation/Troubleshooting.html (original)
+++ storm/site/publish/documentation/Troubleshooting.html Wed Jul 15 17:48:45 2015
@@ -241,6 +241,40 @@ Caused by: java.lang.NullPointerExceptio
     at backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:81)
     ... 6 more
 </code></pre></div>
+<p>or </p>
+<div class="highlight"><pre><code class="language-text" data-lang="text">java.lang.RuntimeException:
java.lang.NullPointerException
+        at
+backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:128)
+~[storm-core-0.9.3.jar:0.9.3]
+        at
+backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:99)
+~[storm-core-0.9.3.jar:0.9.3]
+        at
+backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:80)
+~[storm-core-0.9.3.jar:0.9.3]
+        at
+backtype.storm.disruptor$consume_loop_STAR_$fn__759.invoke(disruptor.clj:94)
+~[storm-core-0.9.3.jar:0.9.3]
+        at backtype.storm.util$async_loop$fn__458.invoke(util.clj:463)
+~[storm-core-0.9.3.jar:0.9.3]
+        at clojure.lang.AFn.run(AFn.java:24) [clojure-1.5.1.jar:na]
+        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]
+Caused by: java.lang.NullPointerException: null
+        at clojure.lang.RT.intCast(RT.java:1087) ~[clojure-1.5.1.jar:na]
+        at
+backtype.storm.daemon.worker$mk_transfer_fn$fn__3548.invoke(worker.clj:129)
+~[storm-core-0.9.3.jar:0.9.3]
+        at
+backtype.storm.daemon.executor$start_batch_transfer__GT_worker_handler_BANG_$fn__3282.invoke(executor.clj:258)
+~[storm-core-0.9.3.jar:0.9.3]
+        at
+backtype.storm.disruptor$clojure_handler$reify__746.onEvent(disruptor.clj:58)
+~[storm-core-0.9.3.jar:0.9.3]
+        at
+backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:125)
+~[storm-core-0.9.3.jar:0.9.3]
+        ... 6 common frames omitted
+</code></pre></div>
 <p>Solution:</p>
 
 <ul>

Modified: storm/site/publish/documentation/Tutorial.html
URL: http://svn.apache.org/viewvc/storm/site/publish/documentation/Tutorial.html?rev=1691252&r1=1691251&r2=1691252&view=diff
==============================================================================
--- storm/site/publish/documentation/Tutorial.html (original)
+++ storm/site/publish/documentation/Tutorial.html Wed Jul 15 17:48:45 2015
@@ -224,7 +224,7 @@
 
 <p>The <code>execute</code> method receives a tuple from one of the bolt&#39;s
inputs. The <code>ExclamationBolt</code> grabs the first field from the tuple
and emits a new tuple with the string &quot;!!!&quot; appended to it. If you implement
a bolt that subscribes to multiple input sources, you can find out which component the <a
href="/javadoc/apidocs/backtype/storm/tuple/Tuple.html">Tuple</a> came from by using
the <code>Tuple#getSourceComponent</code> method.</p>
 
-<p>There&#39;s a few other things going in in the <code>execute</code>
method, namely that the input tuple is passed as the first argument to <code>emit</code>
and the input tuple is acked on the final line. These are part of Storm&#39;s reliability
API for guaranteeing no data loss and will be explained later in this tutorial. </p>
+<p>There&#39;s a few other things going on in the <code>execute</code>
method, namely that the input tuple is passed as the first argument to <code>emit</code>
and the input tuple is acked on the final line. These are part of Storm&#39;s reliability
API for guaranteeing no data loss and will be explained later in this tutorial. </p>
 
 <p>The <code>cleanup</code> method is called when a Bolt is being shutdown
and should cleanup any resources that were opened. There&#39;s no guarantee that this
method will be called on the cluster: for example, if the machine the task is running on blows
up, there&#39;s no way to invoke the method. The <code>cleanup</code> method
is intended for when you run topologies in <a href="Local-mode.html">local mode</a>
(where a Storm cluster is simulated in process), and you want to be able to run and kill many
topologies without suffering any resource leaks.</p>
 

Modified: storm/site/publish/documentation/Understanding-the-parallelism-of-a-Storm-topology.html
URL: http://svn.apache.org/viewvc/storm/site/publish/documentation/Understanding-the-parallelism-of-a-Storm-topology.html?rev=1691252&r1=1691251&r2=1691252&view=diff
==============================================================================
--- storm/site/publish/documentation/Understanding-the-parallelism-of-a-Storm-topology.html
(original)
+++ storm/site/publish/documentation/Understanding-the-parallelism-of-a-Storm-topology.html
Wed Jul 15 17:48:45 2015
@@ -147,7 +147,7 @@
 <p>Here is an example code snippet to show these settings in practice:</p>
 <div class="highlight"><pre><code class="language-java" data-lang="java"><span
class="n">topologyBuilder</span><span class="o">.</span><span class="na">setBolt</span><span
class="o">(</span><span class="s">&quot;green-bolt&quot;</span><span
class="o">,</span> <span class="k">new</span> <span class="nf">GreenBolt</span><span
class="o">(),</span> <span class="mi">2</span><span class="o">)</span>
                <span class="o">.</span><span class="na">setNumTasks</span><span
class="o">(</span><span class="mi">4</span><span class="o">)</span>
-               <span class="o">.</span><span class="na">shuffleGrouping</span><span
class="o">(</span><span class="err">&quot;</span><span class="n">blue</span><span
class="o">-</span><span class="n">spout</span><span class="o">);</span>
+               <span class="o">.</span><span class="na">shuffleGrouping</span><span
class="o">(</span><span class="s">&quot;blue-spout&quot;</span><span
class="o">);</span>
 </code></pre></div>
 <p>In the above code we configured Storm to run the bolt <code>GreenBolt</code>
with an initial number of two executors and four associated tasks. Storm will run two tasks
per executor (thread). If you do not explicitly configure the number of tasks, Storm will
run by default one task per executor.</p>
 

Modified: storm/site/publish/feed.xml
URL: http://svn.apache.org/viewvc/storm/site/publish/feed.xml?rev=1691252&r1=1691251&r2=1691252&view=diff
==============================================================================
--- storm/site/publish/feed.xml (original)
+++ storm/site/publish/feed.xml Wed Jul 15 17:48:45 2015
@@ -5,9 +5,9 @@
     <description></description>
     <link>http://storm.apache.org/</link>
     <atom:link href="http://storm.apache.org/feed.xml" rel="self" type="application/rss+xml"/>
-    <pubDate>Fri, 19 Jun 2015 23:24:16 -0400</pubDate>
-    <lastBuildDate>Fri, 19 Jun 2015 23:24:16 -0400</lastBuildDate>
-    <generator>Jekyll v2.5.3</generator>
+    <pubDate>Wed, 15 Jul 2015 12:45:30 -0500</pubDate>
+    <lastBuildDate>Wed, 15 Jul 2015 12:45:30 -0500</lastBuildDate>
+    <generator>Jekyll v2.5.2</generator>
     
       <item>
         <title>Storm 0.10.0-beta Released</title>
@@ -296,7 +296,7 @@ that allows users to stream data from St
 &lt;li&gt;STORM-130: Supervisor getting killed due to java.io.FileNotFoundException:
File &amp;#39;../stormconf.ser&amp;#39; does not exist.&lt;/li&gt;
 &lt;/ul&gt;
 </description>
-        <pubDate>Mon, 15 Jun 2015 00:00:00 -0400</pubDate>
+        <pubDate>Mon, 15 Jun 2015 00:00:00 -0500</pubDate>
         <link>http://storm.apache.org/2015/06/15/storm0100-beta-released.html</link>
         <guid isPermaLink="true">http://storm.apache.org/2015/06/15/storm0100-beta-released.html</guid>
         
@@ -322,7 +322,7 @@ that allows users to stream data from St
 &lt;li&gt;STORM-130: Supervisor getting killed due to java.io.FileNotFoundException:
File &amp;#39;../stormconf.ser&amp;#39; does not exist.&lt;/li&gt;
 &lt;/ul&gt;
 </description>
-        <pubDate>Thu, 04 Jun 2015 00:00:00 -0400</pubDate>
+        <pubDate>Thu, 04 Jun 2015 00:00:00 -0500</pubDate>
         <link>http://storm.apache.org/2015/06/04/storm095-released.html</link>
         <guid isPermaLink="true">http://storm.apache.org/2015/06/04/storm095-released.html</guid>
         
@@ -349,7 +349,7 @@ that allows users to stream data from St
 &lt;li&gt;STORM-130: Supervisor getting killed due to java.io.FileNotFoundException:
File &amp;#39;../stormconf.ser&amp;#39; does not exist.&lt;/li&gt;
 &lt;/ul&gt;
 </description>
-        <pubDate>Wed, 25 Mar 2015 00:00:00 -0400</pubDate>
+        <pubDate>Wed, 25 Mar 2015 00:00:00 -0500</pubDate>
         <link>http://storm.apache.org/2015/03/25/storm094-released.html</link>
         <guid isPermaLink="true">http://storm.apache.org/2015/03/25/storm094-released.html</guid>
         
@@ -545,7 +545,7 @@ that allows users to stream data from St
 &lt;li&gt;STORM-514: Update storm-starter README now that Storm has graduated from
Incubator&lt;/li&gt;
 &lt;/ul&gt;
 </description>
-        <pubDate>Tue, 25 Nov 2014 00:00:00 -0500</pubDate>
+        <pubDate>Tue, 25 Nov 2014 00:00:00 -0600</pubDate>
         <link>http://storm.apache.org/2014/11/25/storm093-released.html</link>
         <guid isPermaLink="true">http://storm.apache.org/2014/11/25/storm093-released.html</guid>
         
@@ -560,7 +560,7 @@ that allows users to stream data from St
 
 &lt;p&gt;We heartily encourage you to &lt;a href=&quot;http://storm.apache.org/downloads.html&quot;&gt;test
the 0.9.3 release candidate&lt;/a&gt; and provide your feedback regarding any issues
via &lt;a href=&quot;http://storm.apache.org/community.html&quot;&gt;our mailing
lists&lt;/a&gt;, which is an easy and valuable way to contribute back to the Storm
community and to help us moving to an official 0.9.3 release.  You can find the &lt;a
href=&quot;http://storm.apache.org/downloads.html&quot;&gt;0.9.3 release candidate
in our Downloads section&lt;/a&gt;.&lt;/p&gt;
 </description>
-        <pubDate>Mon, 20 Oct 2014 00:00:00 -0400</pubDate>
+        <pubDate>Mon, 20 Oct 2014 00:00:00 -0500</pubDate>
         <link>http://storm.apache.org/2014/10/20/storm093-release-candidate.html</link>
         <guid isPermaLink="true">http://storm.apache.org/2014/10/20/storm093-release-candidate.html</guid>
         
@@ -695,7 +695,7 @@ version: 0.9.2-incubating
 &lt;li&gt;STORM-146: Unit test regression when storm is compiled with 3.4.5 zookeeper&lt;/li&gt;
 &lt;/ul&gt;
 </description>
-        <pubDate>Wed, 25 Jun 2014 00:00:00 -0400</pubDate>
+        <pubDate>Wed, 25 Jun 2014 00:00:00 -0500</pubDate>
         <link>http://storm.apache.org/2014/06/25/storm092-released.html</link>
         <guid isPermaLink="true">http://storm.apache.org/2014/06/25/storm092-released.html</guid>
         
@@ -742,7 +742,7 @@ version: 0.9.2-incubating
 &lt;/tr&gt;
 &lt;/tbody&gt;&lt;/table&gt;
 </description>
-        <pubDate>Tue, 17 Jun 2014 00:00:00 -0400</pubDate>
+        <pubDate>Tue, 17 Jun 2014 00:00:00 -0500</pubDate>
         <link>http://storm.apache.org/2014/06/17/contest-results.html</link>
         <guid isPermaLink="true">http://storm.apache.org/2014/06/17/contest-results.html</guid>
         
@@ -837,7 +837,7 @@ version: 0.9.2-incubating
 &lt;/tr&gt;
 &lt;/tbody&gt;&lt;/table&gt;
 </description>
-        <pubDate>Tue, 27 May 2014 00:00:00 -0400</pubDate>
+        <pubDate>Tue, 27 May 2014 00:00:00 -0500</pubDate>
         <link>http://storm.apache.org/2014/05/27/round1-results.html</link>
         <guid isPermaLink="true">http://storm.apache.org/2014/05/27/round1-results.html</guid>
         
@@ -848,7 +848,7 @@ version: 0.9.2-incubating
         <title>Logo Entry No. 11 - Jennifer Lee</title>
         <description>&lt;p&gt;&lt;img src=&quot;/images/logocontest/jlee2/storm_logo.jpg&quot;
alt=&quot;Storm Brand&quot;&gt;&lt;/p&gt;
 </description>
-        <pubDate>Tue, 29 Apr 2014 00:00:00 -0400</pubDate>
+        <pubDate>Tue, 29 Apr 2014 00:00:00 -0500</pubDate>
         <link>http://storm.apache.org/2014/04/29/logo-jlee3.html</link>
         <guid isPermaLink="true">http://storm.apache.org/2014/04/29/logo-jlee3.html</guid>
         
@@ -859,7 +859,7 @@ version: 0.9.2-incubating
         <title>Logo Entry No. 10 - Jennifer Lee</title>
         <description>&lt;p&gt;&lt;img src=&quot;/images/logocontest/jlee3/storm_logo.jpg&quot;
alt=&quot;Storm Brand&quot;&gt;&lt;/p&gt;
 </description>
-        <pubDate>Tue, 29 Apr 2014 00:00:00 -0400</pubDate>
+        <pubDate>Tue, 29 Apr 2014 00:00:00 -0500</pubDate>
         <link>http://storm.apache.org/2014/04/29/logo-jlee2.html</link>
         <guid isPermaLink="true">http://storm.apache.org/2014/04/29/logo-jlee2.html</guid>
         



Mime
View raw message