我有一个带有单个喷口和3个螺栓(A,B,C)的拓扑结构。
Bolt A从spout接收元组并通过确认发出新值。
螺栓B和螺栓C消耗螺栓A的元组,但螺栓B和C之间没有连接。可以说两个独立的螺栓。
如果Bolt B失败并且Bolt C成功确认元组,那么风暴会一次又一次地重复同一个元组到Bolt C吗?
我想确保两者都成功,如果不是元组应该只去失败的螺栓而不是成功的。我怎么能做到这一点。
我试图通过嘲弄B组中的失败来看B和C中的成功,但风暴重播了所有螺栓的元组。
答案 0 :(得分:0)
如果只有B确认但不是C,则在Spout重放原始源元组。因此,B将第二次获得已经被激活的元组。这称为至少一次处理,即您可能会重复。
如果您希望 exaclty-once ,您可以使用Storm的Trident API(所谓的事务拓扑)。有关详细信息,请参阅Storm文档。