我正在尝试使用cassandra构建一个REST API作为数据库但是我没有在线看到任何文档或示例,我使用的是datastax java驱动程序3.0.0。
public class CassandraDBUtil {
private Cluster cluster;
private PoolingOptions options;
private Session session;
public void connect(String node) {
options = new PoolingOptions(). setMaxRequestsPerConnection(HostDistance.LOCAL, 32768);
cluster = Cluster.builder()
.addContactPoint(node)
.withAddressTranslator(new EC2MultiRegionAddressTranslator())
.withPoolingOptions(options)
.build();
Metadata metadata = cluster.getMetadata();
System.out.printf("Connected to cluster: %s\n", metadata.getClusterName());
for (Host host : metadata.getAllHosts()) {
System.out.printf("Datacenter: %s; Host: %s; Rack: %s\n", host.getDatacenter(), host.getAddress(),
host.getRack());
}
session = cluster.connect("dropalletcassdb");
}
public Session getSession(){
if(this.cluster != null){
System.out.println("@@@@ Returning an old session");
return this.session;
}else{
System.out.println("@@@ Creating a new session");
connect("127.0.0.1");
return this.session;
}
}
下面是另一个类中的函数,
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public List<ActiveBid> getTrackInJSON() {
logger.info("LoginApi: Returning the active bid");
Session session = cassDB.getSession();
String cqlStatement = "select * from active_bid where username='xyz'";
for (Row row : session.execute(cqlStatement)) {
System.out.println(row.toString());
}
session.close();
ActiveBid activeBid = new ActiveBid("3d673111-894d-4fcb-84f7-7d027a9a2419", "XXX-XXX-XXXXXXX", "/p/project_id=1367777", 25, new BigInteger("125"), new BigInteger("150"), "2016-06-04 18:32:37");
List<ActiveBid> activeBidList = new ArrayList<ActiveBid>();
activeBidList.add(activeBid);
return activeBidList;
}
在上面的代码中,我有一个用于构建集群和会话的util类,然后我在另一个类中有getTrackInJSON,它在向http://localhost:8080/cassExample/rest/get发出请求时调用。每次我调用/ get调用时,它都会构建集群和会话,平均响应时间为500毫秒。我不确定我做错了什么,我甚至没有将结果集作为响应返回,我回复了一个模拟的响应并且花了这么多时间。有人可以指出我正确的方向。
答案 0 :(得分:0)
只需将静态与所有类变量放在一起。喜欢以下
private static Cluster cluetr; 私有静态会话会话; 。 。 。然后创建此类的构造函数并初始化所有类变量。然后创建一个方法getSession。在第一次检查是否初始化集群和会话变量如果未初始化,则使用默认构造函数创建此类的对象,以便初始化所有变量,然后发回会话变量。