apache 风暴可靠性超时配置

apache storm reliablity timeout configuration

我在 Linux Ubuntu 中部署了一个 nodejs->kafka>storm->Mongo。本来一切正常。然后我改变了 storm worker 中的方法,这使得 storm worker 处理消息非常慢,每条消息大约 1 分钟,我注意到消息从 storm 中一次又一次地发送。我恢复到原来的方法,一切都很好。 (原始方法处理时间为每条消息 90 毫秒)。

我想这是 Storm 可靠性进入播放器。当消息未被确认或超时时,它会再次发送消息。

如果我的猜测是正确的,如何配置这个超时?

如果我猜错了,为什么同一条消息发送了两次或三次?

您可以通过配置参数Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS设置超时时间。参见 https://storm.apache.org/javadoc/apidocs/backtype/storm/Config.html#TOPOLOGY_MESSAGE_TIMEOUT_SECS

默认值为 30 秒,请参阅此处 defaults.yamlhttps://github.com/apache/storm/blob/master/conf/defaults.yaml

# maximum amount of time a message has to complete before it's considered failed
topology.message.timeout.secs: 30

当元组失败时,它应该出现在 Storm UI 中并且也应该被记录(也许您需要调整日志级别)。所以你可以仔细检查一个元组是否超时。