当 cassandra 重新启动时,应用程序的准备好的语句会发生什么?

What happens to the prepared statements of an application when cassandra is restarted?

让我们以生产中的 java ee 应用程序为例,它使用准备好的语句。让我们假设它准备了初始化其会话 bean 所需的语句。

在cassandra中,每条准备好的语句都有一个id。如果现在,如果 cassandra 重新启动,java ee 应用程序是否也需要重新启动?

几乎所有 Cassandra 客户端都应该支持这种情况而无需重新启动(据我所知所有 datastax 驱动程序都这样做)。例如,在 java 驱动程序中,当节点关闭并再次启动时,将其标记为可用时它所做的第一件事就是 reprepare all PreparedStatements your application has registered.

此外,如果您在应用程序中使用 PreparedStatement 进行查询并且 Cassandra 节点响应它不知道该语句,client should prepare that query and retry the request.