我不确定您使用的是哪个版本的Storm,从0.9.4开始,您的要求可以如下实现。
builder.setBolt(MYDISTRIBUTEDWORKER, new DistributedBolt()).fieldsGrouping(SPOUTNAME, new Fields("groupid"));
在DistributedBolt的准备方法中,
public void declareOutputFields(OutputFieldsDeclarer declarer) { declarer.declare(new Fields("groupid", "log")); }
在执行方法的某个地方,你会打电话
collector.emit(new Values(groupid, log));
那么具有相同groupid的元组将被传递给下一个bolt的同一个实例。