title: Is there any way to ACK tuples in a part of Storm bolts
body: <p>As it's inefficiently to ack all messages in Storm, among the whole components of my topology, only some of them needs to guarantee message processing, and I'd like to know is there a proper way to do this. </p>
  
  <p>For instance, I have a <code>TimingBolt</code> which takes tick tuple to make the job work under a specific cycle:</p>
  
  <pre class="lang-java prettyprint-override"><code>// TimingBolt
  @Override
  public void execute(Tuple input) {
      if (TupleUtils.isTick(input)) {
          collector.emit(streamA, input, new Values("Tick"));
      } else {
          collector.emit(streamB, new Values("Message"));
      }
  }
  </code></pre>
  
  <p>I want to guarantee the <code>"Tick"</code> message be sent explicitly once to the bolt after <code>TimingBolt</code></p>
  
  <pre class="lang-java prettyprint-override"><code>// The AggregateBolt after TimingBolt
  @Override
  public void execute(Tuple input) {
      if (input.getString(0).equals("Tick")) {
          collector.emit(new Values("Get Tick"));
          collector.ack();
      } else {
          // do something else
          collector.emit(new Values("Not Tick"));
      }
  }
  </code></pre>
  
  <p>and I hope that bolts except <code>TimingBolt</code> and <code>AggregateBolt</code> could be out of range of the <code>ACK</code> tree.</p>
  
  <p>The document <a href="http://storm.apache.org/documentation/Guaranteeing-message-processing.html" rel="nofollow">http://storm.apache.org/documentation/Guaranteeing-message-processing.html</a> does not show anything about this matter. Is this a valid scene, or is starting ack from spout the only way to make the acker work?</p>