如果在单个节点上使用6个线程启动有状态流应用程序,是否会发生上述异常?
如果在节点1上开始使用特定主题的有状态流应用程序在不同节点上运行,是否需要遵循任何流程?
如果在2个节点上启动了有状态流应用程序,并且如果发生上述异常,流应用程序是否会立即终止?
随访:
如果在单个节点上使用6个线程启动有状态流应用程序,是否会发生上述异常?
它可以
基本上我想知道我们是否将整个主题消耗保留在单个节点上,如果发生重新平衡,是否会因为其中一个线程停止/终止而避免从内部主题重新构建存储?
存储尚未就绪:您可以等到商店准备就绪 - 最好注册还原回调(请查看文档以获取详细信息),以便在还原完成后获得通知,然后您可以重试查询商店。
抱歉,只是为了清楚上面的内容,是StateRestoreCallback还是StateRestoreListener?我认为这是后者。此外,是否需要覆盖StateRestoreCallback并包含还原商店的逻辑?
答案 0 :(得分:0)
InvalidStateStoreException
可能有不同的原因,因此,如果没有更多的背景,很难回答您的问题。
如果在单个节点上使用6个线程启动有状态流应用程序,是否会发生上述异常?
它可以。
如果在节点1上开始使用特定主题的有状态流应用程序在不同节点上运行,是否需要遵循任何流程?
没有
如果在2个节点上启动有状态流应用程序,并且如果发生上述异常,流应用程序是否会立即终止?
取决于抛出的异常:
StreamThread
会死,但应用程序不会自动终止。您应该在KafkaStreams
实例上注册未捕获的异常处理程序,并使用自定义代码(例如,终止应用程序)对死亡线程做出反应。KafkaStreams
引发,则StreamThread
不会受到影响。这个异常可以在try-catch块中捕获到哪里?
通常是,特别是如果您参考交互式查询功能。
如果我们将睡眠添加10分钟,商店会自动进入有效状态吗?
如果您参考交互式查询功能,睡眠不是一个好策略。异常有多种原因,您需要做出相应的反应:
<强>更新强>
基本上我想知道我们是否将整个主题消耗保留在单个节点上,如果发生重新平衡,是否会因为其中一个线程停止/终止而避免从内部主题重新构建存储? / p>
是(对于非EOS案例)。其他线程会检测本地存储并重用它。
StateRestoreCallback或StateRestoreListener
是的,StateRestoreListener
。只有在编写自定义状态存储时,才会实现StateRestoreCallback
。