title: Storm Cluster Duplicate Tuples
body: <p>Currently I am working on a project where I have setup a Storm cluster across four Unix hosts. </p>
  
  <p>The topology itself is as follows:</p>
  
  <ol>
  <li>JMS Spout listens to an MQ for new messages</li>
  <li>JMS Spout parses and then emits the result to an Esper Bolt</li>
  <li>The Esper Bolt then processes the event and emits a result to a JMS Bolt</li>
  <li>The JMS Bolt then publishes the message back onto the MQ on a different topic</li>
  </ol>
  
  <p>I realize that Storm is a "at least-once" framework. However, if I receive 5 events and pass these onto the Esper Bolt for counting then for some reason I am receiving 5 count results in the JMS Bolt(all the same value). </p>
  
  <p>Ideally, I want to receive one result output, is there some way I can tell Storm to ignore duplicate tuples? </p>
  
  <p>I think this has something to do with the parallelism that I have setup because it works as expected when I just have a single thread:</p>
  
  <pre><code> TopologyBuilder builder = new TopologyBuilder();
      builder.setSpout(JMS_DATA_SPOUT, new JMSDataSpout(),2).setNumTasks(2);
      builder.setBolt("esperBolt", new EsperBolt.Builder().build(),6).setNumTasks(6)
              .fieldsGrouping(JMS_DATA_SPOUT,new Fields("eventGrouping"));
      builder.setBolt("jmsBolt", new JMSBolt(),2).setNumTasks(2).fieldsGrouping("esperBolt", new Fields("eventName"));
  </code></pre>
  
  <p>I have also seen Trident for "exactly-once" semantics. I am not fully convinced this would solve this issue however.</p>