如何使用从同一个喷口读取多个螺栓来处理风暴中的确认

时间:2016-10-04 11:00:47

标签: apache-storm

我的拓扑结构如下:

Data_Enrichment_Persistence_Topology

所以基本上我在这里要解决的问题是,每次在Stop或Load服务螺栓中出现任何问题,并且元组失败时,它会重放并且喷口会重新发出它。这使得Cassandra bolt重新处理元组并重写数据。

我无法在负载中制作元组并且在未发生任何故障的情况下需要重放,因此无法使用它们进行重放。但是我只想重播上层工作流程。

我正在使用KafkaSpout发出数据(它是在"默认"流上发出的)。不确定如何在Kafka Spout的发射级别复制流。

如果我可以复制流,那么两个中的任何一个上的重放只会在喷口级别的特定流上重新发出消息,而另一个流不受影响吗?

TIA!

1 个答案:

答案 0 :(得分:3)

您需要在Spout中使用两个输出流 - 每个下游通道一个。此外,您将每个元组发送到两个流(使用不同的消息ID)。

因此,如果一个失败,您可以将此元组回复到此流。