Spring Boot Cassandra:c.d.o.d.i.core.session.DefaultSession:[s0] 协商的协议版本 V5 而不是 v4

Posted

技术标签:

【中文标题】Spring Boot Cassandra:c.d.o.d.i.core.session.DefaultSession:[s0] 协商的协议版本 V5 而不是 v4【英文标题】:Spring Boot Cassandra : c.d.o.d.i.core.session.DefaultSession : [s0] Negotiated protocol version V5 instead of v4 【发布时间】:2021-09-05 13:34:16 【问题描述】:

请教关于 Spring Boot 和 Cassandra 的小问题。

我目前正在使用 Spring Boot 2.5.1,其关联的 Cassandra 连接器:spring-boot-starter-data-cassandra 也在 2.5.1,我认为它反过来使用驱动程序 4.11.1

c.d.o.d.i.core.DefaultMavenCoordinates : DataStax Java driver for Apache Cassandra(R) (com.datastax.oss:java-driver-core) version 4.11.1

在应用程序启动时,我观察到一个我不明白的奇怪日志:

c.d.o.d.i.core.session.DefaultSession : [s0] Negotiated protocol version V4 for the initial contact point, but cluster seems to support V5, keeping the negotiated version

集群似乎支持 V5(不管是什么),但我的应用正在与 V4“进行协商”。

请问如何配置我的应用程序,以利用这个 cassandra V5?

谢谢

【问题讨论】:

【参考方案1】:

本机协议定义了驱动程序与 Cassandra 集群之间通过 TCP 连接的消息格式。 Java 驱动 4 支持协议版本 v3 (C* 2.1)、v4 (C* 2.2, 3.x) 和 v5 (C* 4.0)。

由于 Cassandra 4.0 尚未发布,原生协议 v5 支持仍处于测试阶段,因此 Java 驱动程序会自动协商到协议 v4(推荐)。

您可以在CassandraClusterFactoryBean 中设置ProtocolVersion,但这不是您需要担心的事情,因为您发布的日志条目仅供参考。干杯!

【讨论】:

感谢您的回答。我实际上使用的是 Cassandra 4.0,这是可从 Apache Cassandra 下载的 RC 版本。但是我不使用CassandraClusterFactoryBean ,而是使用CqlSession。请问如何将 v5 与 CqlSession 一起使用?从你所说的看来,使用 v5 和 Cassandra 4 可能是一个不错的选择 您需要查看 Spring Boot 文档以了解如何在代码中实例化该 bean。无论如何,选择 v4 而不是 v5 既不好也不坏,因为 v5 仍处于测试阶段并且正在实施过程中。它与您使用 C* 4.0 没有本质区别,因为它还没有任何功能。同样,推荐使用协议 v4。干杯!

以上是关于Spring Boot Cassandra:c.d.o.d.i.core.session.DefaultSession:[s0] 协商的协议版本 V5 而不是 v4的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 1.4:Spring Data Cassandra 1.4.2 与 Cassandra 3.0 不兼容?

Spring Boot 1.5.x with Spring Data Cassandra 1.5.x 与 Cassandra 2.1 不兼容

使用 spring-boot-data 在 Cassandra 中进行分页

用于启用 SSL 的 Spring Boot Cassandra 配置

带有 Cassandra 3.x 驱动程序的 Spring Boot

如何使用 CassandraAutoConfiguration 在 Spring Boot 应用程序和 cassandra 之间配置 ssl?