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