如何在spring数据cassandra中设置客户端时间戳?

时间:2016-07-19 19:42:17

标签: cassandra spring-data-cassandra

在datastax驱动程序中,我们有api喜欢

  

withTimestampGenerator(new AtomicMonotonicTimestampGenerator())

启用该功能以在客户端设置每个查询的时间戳。我们如何通过弹簧数据canssandra实现相同目的。

我知道我可以在cql中使用“USING TIMESTAMP value”但是有什么东西可以提供Spring数据cassandra吗?我在CassandraClusterFactoryBean中找不到这样的api。

2 个答案:

答案 0 :(得分:2)

你是对的!

不幸的是,似乎SD Cassandra 在支持使用DataStax Java驱动程序Cluster.Builder API的CassandraCqlClusterFactoryBean配置设置的withTimestampGenerator(:TimestampGenerator)类上缺少配置选项。

同样不幸的是,目前还没有解决方法(CQL中的USING TIMESTAMP除外)。

CassandraCqlClusterFactoryBean似乎缺少以下配置选项:

  1. Cluster.Builder.withAddressTranslator(:AddressTranslator)
  2. Cluster.Builder.withClusterName(:String)
  3. Cluster.Builder.withCodeRegistry(:CodecRegistry)
  4. Cluster.Builder.withMaxSchemaAgreementWaitSeconds(:int)
  5. Cluster.Builder.withSpeculativeExecutionPolicy(:SpeculativeExecutionPolicy)
  6. 但是,请注意,withTimestampGenerator(..)仅在DataStax Java驱动程序的第3版中受支持,而下一版本(即 1.5.0 )的SD Cassandra 将支持......

      

    此功能仅适用于本机协议的V3或更高版本。对于早期版本,时间戳始终在服务器端生成,通过此方法设置生成器将不起作用。

答案 1 :(得分:-1)

时间戳功能在SD 1.5.x中可用,   public void setTimestampGenerator(TimestampGenerator timestampGenerator) { this.timestampGenerator = timestampGenerator; }

https://github.com/spring-projects/spring-data-cassandra/blob/cc4625f492c256e5fa3cb6640d19b4e048b9542b/spring-data-cassandra/src/main/java/org/springframework/data/cql/config/CassandraCqlClusterFactoryBean.java