gpt4 book ai didi

cassandra - storm - 处理 bolt.execute 中的异常

转载 作者:行者123 更新时间:2023-12-01 23:42:53 25 4
gpt4 key购买 nike

我正在使用 storm处理其中一个 bolt 正在写入 cassandra 的流。 cassandra session.execute() 命令可能会抛出异常,我想知道如何将其捕获为“使”元组“失败”,以便重试。

IRichBolt 的文档没有 show它抛出任何东西,所以我想知道如何处理异常情况。

主要问题:我应该将 cassandra 调用包装在 try/catch 中,还是 storm 会为我处理这种情况?

最佳答案

多部分答案:

1) 一定要用 try-catch block 包围您的代码。

2) 如何处理故障取决于 Storm 拓扑和故障类型:

如果异常表明立即重试可能会成功,那么您可以循环一些小的、有限的次数,直到尝试成功或尝试次数用完。

如果您正在执行的元组是 spout 发出的元组,那么您的 bolt 可能会使该元组失败。这将强制 Storm 重试(也就是说将调用 spout 上的 fail() 方法,您可以编写重试代码)

如果处理此元组已经产生了至少一个副作用,并且您不希望由于重试该元组而重复该副作用,那么您需要更有创意一些。您的 Cassandra bolt 可以将失败的元组发送到失败的元组流中,它可以持久保存在某个地方(HBase、文件系统、Kafka),直到您准备好再次尝试。要重试,您可以将另一个 Spout 添加到您的拓扑中,该 Spout 从失败元组的存储中读取并将它们发送到流中返回到 Cassandra bolt 以进行重试。这为您提供了一种方法,可以在重试之间延长时间来连续循环重试。如果除了失败的元组之外,您还坚持/记录了 Cassandra 异常,您可以浏览/监控日志以查看是否有您的管理员应该知道的任何问题。

关于cassandra - storm - 处理 bolt.execute 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30485602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com