我制作了storm拓扑,处理的字符串格式是:“x-x-x-x”,其中x是一些数字。我希望字符串流被分成4个螺栓相等。
问题是,对于以下代码,所有螺栓都会获取所有元组,而不是将每个元组只发送给一个螺栓:
builder.setSpout("digits-spout", new ReaderSpout());
builder.setBolt("level-1", new SomeBolt(1)).shuffleGrouping("digits-spout");
builder.setBolt("level-2", new SomeBolt(2)).shuffleGrouping("digits-spout");
builder.setBolt("level-3", new SomeBolt(3)).shuffleGrouping("digits-spout");
builder.setBolt("level-4", new SomeBolt(4)).shuffleGrouping("digits-spout");
正如你所看到的,我使用相同的螺栓,但不同的constructor。谢谢!
2条答案
按热度按时间50few1ms1#
如果希望螺栓具有不同的处理逻辑,只需为同一螺栓添加4个任务即可。在这种情况下,您将在bolt示例之间随机接收消息。您可以检查该螺栓中的字符串值,并采用适当的执行路径。您将避免对4个螺栓使用单独的代码库。
或者,如果您想为字符串使用单独的bolt代码,请参考zackeriya的上述建议。
piwo6bdm2#
根据我从你的问题中了解到的情况,我可以为你的问题提供一个额外的螺栓,例如: