当前位置: 首页 > 知识库问答 >
问题:

如何在Springboot应用程序中启用Cassandra CqlSession度量

松铭
2023-03-14

我想启用cassandra cqlsession度量。当尝试注册cqlsession度量时,它提供可选的。springboot应用程序中的empty()。这里我使用的是cassandra datastax java驱动程序4.6。

这是我的代码:

@Autowired
private CqlSession cqlsession;

MetricRegistry metricRegistry = cqlsession.getMetrics()
            .orElseThrow(() -> new IllegalArgumentException("not able to get metrics"))
            .getRegistry();

正在引发IllegalArgumentException错误。

当参考卡桑德拉税务局的官方文件时(https://docs.datastax.com/en/developer/java-driver/4.6/manual/core/metrics/#configuration).添加到项目中的同一组conf文件无法解决此问题

共有1个答案

陈寒
2023-03-14

我用以下方法解决了这个问题:

配置类

import static com.datastax.oss.driver.api.core.config.DefaultDriverOption.METRICS_NODE_ENABLED;
import static com.datastax.oss.driver.api.core.config.DefaultDriverOption.METRICS_SESSION_ENABLED;

import org.springframework.boot.autoconfigure.cassandra.DriverConfigLoaderBuilderCustomizer;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
@EnableConfigurationProperties(CassandraProperties.class)
public class CassandraMetricsConfig {

    @Bean
    DriverConfigLoaderBuilderCustomizer configLoaderBuilderCustomizer(CassandraProperties cassandraProperties) {
        return builder -> {
            builder.withStringList(METRICS_SESSION_ENABLED, cassandraProperties.getSessionMetrics());
            builder.withStringList(METRICS_NODE_ENABLED, cassandraProperties.getNodeMetrics());
        };
    }
}

属性类

@ConfigurationProperties(prefix = "cassandra")
@Data
public class CassandraProperties {

    @NotNull
    private List<String> sessionMetrics = new ArrayList<>();

    @NotNull
    private List<String> nodeMetrics = new ArrayList<>();

}

应用yml

cassandra:
  session-metrics:
    - bytes-sent
    - connected-nodes
    ...
  node-metrics:
    - pool.open-connections
    - pool.in-flight
    ...

请注意,这种方法仅适用于不需要额外配置(如cql请求)的指标。如果要监视cql请求,则必须扩展示例以配置所需的属性。

 类似资料:
  • 我有Kafka Streams java应用程序启动并运行。我试图使用KSQL创建简单的查询,并使用Kafka流来实现复杂的解决方案。我希望将KSQL和Kafka流作为Java应用程序运行。 我打算通过https://github.com/confluentinc/ksql/blob/master/ksqldb-examples/src/main/java/io/confluent/ksql/em

  • 要获取请求URL,可以在堆栈溢出中找到以下方法。 第一种方法: 第二种方法: 第三种方法: 我不知道在spring boot应用程序中使用哪一个来获取请求URL。 如果我使用第三种方法,那么我是否需要在配置类中创建RequestContextListener的bean,如下所示?

  • 我想启用或禁用具有外部配置的SSL/TLS,这些配置可以在应用程序启动期间提供。应用程序应该支持http和HTTPS的所有crud操作。 既然上面的属性是不推荐使用的,那么我如何在不使用配置文件的情况下实现它。

  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

  • 问题内容: 我一直在从事一个更像框架的项目,并且可以安装几个应用程序/模块。像基本的应用商店或google.play商店一样看到它。这是一个Intranet应用程序,所有模块都可以添加到您的用户帐户中。 该框架已经在开发中,但是我现在正在围绕应用程序/模块的想法。(链接到开发中的概念证明,可以在这里找到) 一个应用程序应该是独立的,并且不能突然包含框架中的脚本,这可以通过在单独的模块中进行结构化来

  • 我想在intellij Idea中以调试模式启动spring-boot maven应用程序,但当我创建断点时,应用程序不会挂起,而是会继续。我读了很多题目,但还是不明白怎么做。你能帮我决定最好的行动方案吗。 但是当请求LocalHost:5005/MyPage时,我会出现错误101(NET::ERR_CONNECTION_RESET)。似乎有些maven参数没有指定。 下面是我在pom.xml中的