【问题标题】:How to extend cassandra SessionManager for Instrumentation如何为 Instrumentation 扩展 cassandra SessionManager
【发布时间】:2014-11-17 08:09:36
【问题描述】:

我想检测通过 Cassandra 中的 datastax java 驱动程序执行的查询。是扩展 com.datastax.driver.core.SessionManager 的方式吗?此外,如果扩展 SessionManager 我必须通过修改集群源在 com.datastax.driver.core.Cluster 中实例化它吗? 这是最好的方法还是有其他可能的方法来实现这一目标?

【问题讨论】:

    标签: java cassandra driver datastax


    【解决方案1】:

    我只是通过定时调用 session.execute() 来收集指标:

    private Session session;
    private AtomicLongMap<String> executeCount;
    private AtomicLongMap<String> executeTime;
    

    ....

    @Override
    public ResultSet execute(BoundStatement statement, Object... bindVariables) {
        try {
            long startTime = System.currentTimeMillis();
            ResultSet resultSet = session.execute(statement);
            long endTime = System.currentTimeMillis();
            executeCount.incrementAndGet(command);
            executeTime.addAndGet(command, endTime - startTime);
            return resultSet;
        } catch (IllegalArgumentException e) {
            LOG.error("IllegalArgumentException executing:" + command + ":" + Arrays.toString(bindVariables));
            throw e;
        }
    }
    

    【讨论】:

    • OTOH,除了时间以外还有其他信息要收集吗?
    • 嗨,唐,感谢您的回答。但我认为我的问题并不清楚。我的主要问题是,要检测,我们必须扩展 SessionManager 或实现 Session 接口以及如何与 Cluster 类关联?。
    • 为什么要扩展SessionManager?
    猜你喜欢
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2013-07-04
    • 2016-05-05
    • 1970-01-01
    相关资源
    最近更新 更多