NebulaPool pool 这个是 连接池吗 , 这样写 并发请求就不对了,就会超时。有啥没写到的地方吗。

package com.wx.application.nebula.graph.base;

import java.util.Arrays;
import java.util.List;

import com.vesoft.nebula.client.graph.NebulaPoolConfig;
import com.vesoft.nebula.client.graph.data.HostAddress;
import com.vesoft.nebula.client.graph.net.NebulaPool;
import com.vesoft.nebula.client.graph.net.Session;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class NebulaGraphClient1 {

NebulaPool pool;
//Session session;

public void nebulaPool() {
	pool = new NebulaPool();
	try {
	    NebulaPoolConfig nebulaPoolConfig = new NebulaPoolConfig();
	    nebulaPoolConfig.setMaxConnSize(100);
	    nebulaPoolConfig.setTimeout(1000);
	    nebulaPoolConfig.setWaitTime(1000);
	    List<HostAddress> addresses = Arrays.asList(new HostAddress("localhost", 9669));
	    pool.init(addresses, nebulaPoolConfig);
	    
	    //session= pool.getSession("root", "123456", false);
	    
	} catch (Exception e) {
		e.printStackTrace();
	}
}

public Session getSession() throws Exception {
	/*if(session.ping()) {
		return session;
	}
	session.release();*/
	Session session = pool.getSession("root", "123456", false);
	return session;
}

}

nuebla pool 就是连接池, 多个线程可以共用一个链接池, 保证每个session只被一个线程持有就可以了

调用几次就获取不到了,一直超时

session 是短连接吗 ,session.release(); 之后每次获取的sessionid都是不同的

可以来试试 GitHub - nebula-contrib/ngbatis: Ngbatis is a database ORM framework for Nebula graph + springboot. Take advantage of mybatis' usage habits to develop. (NGBATIS 是一款针对 Nebula Graph + Springboot 的数据库 ORM 框架。借鉴于 MyBatis 的使用习惯进行开发。)

1 个赞

session 和连接是两个概念, session 持有一个无状态的连接和服务端通信. 每次获取session 都是通过鉴权生成一个新 session id

你代码写的每次调用 getSession() 都会创建一个连接池, 有什么好处? 为什么不共用一个连接池然后从里面获取 session?

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。