使用 spring xml 设置 heartbeatintervalseconds

Set heartbeatintervalseconds using spring xml

我在我的项目中使用 spring-data-Cassandra v1.3.2。 是否可以使用 spring 配置 XML 文件设置 heartbeatintervalseconds。

我的应用程序日志中每 30 秒获取 4 行心跳 DEBUG 日志,我不确定如何避免它们。

遗憾的是,答案是否定的。无法使用 XML 配置来配置心跳间隔。在 PoolingOptions 中只能配置以下 local/remote 属性:

  • min-simultaneous-requests
  • max-simultaneous-requests
  • core-connections
  • max-connections

如果切换到基于 Java 的配置,则可以通过扩展 AbstractClusterConfiguration:

配置 PoolingOptions
@Configuration
public class MyConfig extends AbstractClusterConfiguration {

    @Override
    protected PoolingOptions getPoolingOptions() {

        PoolingOptions poolingOptions = new PoolingOptions();
        poolingOptions.setHeartbeatIntervalSeconds(10);
        return poolingOptions
    }
}

很遗憾,没有。

适当地回顾了 SD Cassandra CassandraCqlClusterParser class, it is apparent that you can specify both "local" and "remote" connection pooling options, however, neither handler handles all the Cassandra Java driver "pooling options”之后(例如 heartbeatIntervalSeconds)。

似乎还缺少其他几个选项:idleTimeoutSecondsinitializationExecutorpoolTimeoutMillisprotocolVersion

同样不幸的是它出现了 SD Cassandra PoolOptionsFactoryBean does not support these "pooling options"。

然而,并非所有都丢失了。

虽然您的 SD Cassandra 应用程序可能主要从 XML 解析其配置,但这并不妨碍您使用 Java 配置和 XML.

的组合

例如,您可以使用 Spring Java 配置 class 来配置您的集群并表达您的 PoolingOptions在 Java 配置中...

@Configuration
@ImportResource("/class/path/to/cassandra/config.xml")
class CassandraConfig {

  @Bean
  PoolingOptions poolingOptions() {
    PoolingOptions poolingOptions = new PoolingOptions();

    poolingOptions.setHeartbeatIntervalSeconds(30);
    poolingOptions.setIdleTimeoutSeconds(300);
    poolingOptions.setMaxConnectionsPerHost(50);
    poolingOptions.set...

    return poolingOptions;
  }

  @Bean
  CassandraClusterFactoryBean cluster() {
    CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean()

    cluster.setContactPoints("..");
    cluster.setPort(1234);
    cluster.setPoolingOptions(poolingOptions());
    cluster.set...

    return cluster;
  }
}

希望这对您有所帮助。

仅供参考,您可能需要升级到 "current" Spring Data Cassandra 版本,1.4.1.RELEASE