Spring Boot集成Cassandra:停止应用后KeySpace自动删除问题排查
问题原因及解决方案
嗨,这个问题的根源其实就在你的CassandraConfig配置类里!
你重写了getKeyspaceDrops()方法,并且返回了包含DropKeyspaceSpecification.dropKeyspace(KEYSPACE)的列表:
@Override protected List<DropKeyspaceSpecification> getKeyspaceDrops() { return Arrays.asList(DropKeyspaceSpecification.dropKeyspace(KEYSPACE)); }
Spring Data Cassandra在应用上下文关闭(也就是你停止Spring Boot应用)的时候,会执行这个方法返回的所有KeySpace删除操作。你明确指定了要删除myTestKeySpace,所以每次停应用都会把这个KeySpace删掉。
解决办法很简单,二选一就行:
直接移除
getKeyspaceDrops()方法的重写:
如果你不需要在应用关闭时删除KeySpace,删掉这个方法就好,AbstractCassandraConfiguration的默认实现会返回空列表,不会执行删除操作。修改方法返回空列表:
要是你想保留这个方法的重写(比如后续有其他逻辑),可以改成返回空列表:@Override protected List<DropKeyspaceSpecification> getKeyspaceDrops() { return Collections.emptyList(); }
修改之后,再启动然后停止应用,myTestKeySpace就会保留在Cassandra里了。
内容的提问来源于stack exchange,提问作者hamed
相关产品推荐
相关产品推荐

