Tag: esper

Storm Cluster重复元组

目前我正在开发一个项目,我在四个Unix主机上设置了一个Storm集群。 拓扑本身如下: JMS Spout侦听MQ以获取新消息 JMS Spout解析然后将结果发送到Esper Bolt Esper Bolt然后处理事件并将结果发送到JMS Bolt 然后,JMS Bolt将消息发布回MQ上的另一个主题 我意识到Storm是一个“至少一次”的框架。 但是,如果我收到5个事件并将这些事件传递给Esper Bolt进行计数,那么由于某种原因,我在JMS Bolt中获得了5个计数结果(所有相同的值)。 理想情况下,我想收到一个结果输出,有什么方法我可以告诉Storm忽略重复的元组? 我认为这与我设置的并行性有关,因为当我只有一个线程时它会按预期工作: 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”)); 我也看过Trident的“一次性”语义。 但我并不完全相信这会解决这个问题。