ack/anchor Storm 元组的正确方法

Proper way to ack/anchor Storm tuples

我有一个用于小批量元组的螺栓。我基本上有一个 switch 语句,用于侦听来自前一个螺栓的流或 tick tuple。它看起来像这样:

switch(component) {
    bolt1:
      do some work...
      anchors.add(tuple)
    tick:
      do some work...
      collector.emit(anchors, value)
      collector.ack(tuple)
      anchors.clear()

当我 运行 这样做时,Storm UI 显示从这个螺栓确认的元组数量非常少。这是锚定它们的正确方法还是我还需要在 bolt switch 语句中调用 collector.ack(tuple)?尽管 Storm UI 计数很奇怪,但拓扑是 运行ning,没有任何元组超时。

如果你想在 worker 崩溃时重播挂起的锚点,你不应该确认 bolt1 案例中的元组。你也永远不想多次确认元组。

看起来你在确认 tick 元组而不是 tick 案例中的锚点?你也应该确认锚点,否则一旦你达到拓扑消息超时,喷口就会被告知它们已经失败。