如何扩展cassandra SessionManager for Instrumentation

时间:2014-09-23 07:47:20

标签: java cassandra driver datastax

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

1 个答案:

答案 0 :(得分: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;
    }
}