Apache storm 流的apachestorm优先级

Apache storm 流的apachestorm优先级,apache-storm,Apache Storm,我有以下问题。我有一个Apache Storm拓扑,如下所示: A->B->C 是一个喷口,从数据库中得到了一些序列 B:正在分裂这个序列并发射n个长序列 C:计算子序列是否在所有序列中 现在,如果c发现一个子序列不在所有序列中,它应该向B发送一条指令消息,B可以删减一些序列,并且不能发送比不在所有列表中的子序列长的所有元组 我的问题是如何在b的消息队列中转发此指令元组。您只需定义一个循环图: TopologyBuilder=new TopologyBuilder(); 建筑商:addSpout

我有以下问题。我有一个Apache Storm拓扑,如下所示:

A->B->C

是一个喷口,从数据库中得到了一些序列

B:正在分裂这个序列并发射n个长序列

C:计算子序列是否在所有序列中

现在,如果c发现一个子序列不在所有序列中,它应该向B发送一条指令消息,B可以删减一些序列,并且不能发送比不在所有列表中的子序列长的所有元组


我的问题是如何在b的消息队列中转发此指令元组。

您只需定义一个循环图:

TopologyBuilder=new TopologyBuilder();
建筑商:addSpout(“A”,…);
建筑商添加螺栓(“B”,…)
.someConnectionPattern(“A”)//常规前向连接
.allGrouping(“C”);//循环反馈连接
builder.addBolt(“C”,…).someConnectionPattern(“B”)

在本例中,我使用
allGrouping
将截断信息分发给所有实例。根据您的用例,
字段分组
也可能会起作用。

我了解这种体系结构。但是如果现在B的队列中有来自A的10条消息,然后C中的1条进来了,B必须先完成这10条消息,然后才能得到C的消息,对吗?我需要C的这个消息必须先执行。还是我没有理解对什么?你理解对了。然而,Storm本身不能处理元组。您只能在自己的代码中缓冲来自A和B的10个元组。当然,您必须知道C反馈元组稍后会出现——如果您不能保证这一点,您需要一种策略来处理缓冲元组而不接收C元组。或者你只是接受斯托姆的行为;也就是说,您的源将发出1000个元组,而A的缓冲区中有10个元组。您只需在接收反馈C元组之前处理它们。您仍然可以保存以处理990个元组。但这取决于您的用例和数据速率。