我制作了风暴拓扑,我正在处理这种格式的字符串:“x-x-x-x”,其中x是某个数字。我希望字符串流在4个螺栓之间分开。
问题在于,对于以下代码,所有的螺栓都会获得所有元组,而不是将eack元组发送到一个螺栓:
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");
你可以看到我使用相同的螺栓,但不同的consturctor。 谢谢!
答案 0 :(得分:0)
根据我对你的问题的理解,我可以为你的问题提供一个额外的螺栓,如下面的例子:
builder.setSpout("digits-spout", new ReaderSpout());
builder.setBolt("stringSplitterBoltName", new
StringSplitterBolt(1)).shuffleGrouping("digits-spout");
builder.setBolt("level-1", new
SomeBolt(1)).shuffleGrouping("stringSplitterBoltName");
builder.setBolt("level-2", new
SomeBolt(2)).shuffleGrouping("stringSplitterBoltName");
builder.setBolt("level-3", new
SomeBolt(3)).shuffleGrouping("stringSplitterBoltName");
builder.setBolt("level-4", new
SomeBolt(4)).shuffleGrouping("stringSplitterBoltName");
答案 1 :(得分:0)
如果您希望螺栓具有不同的处理逻辑,则可以添加相同螺栓的4个任务。在这种情况下,您将在螺栓实例之间随机接收消息。您可以检查该螺栓中的字符串值并采用适当的执行路径。您将避免使用4个螺栓的单独代码库。
或者,如果您想为字符串设置单独的螺栓代码,请参阅zackeriya的上述建议。