nebula 2.0 java api支持异步吗

如题,是不是现在还不支持异步?

当前版本是不支持异步的,支持的话会及时同步出来,请关注相关发版信息

2.0的java client不打算支持异步了,因为依赖的第三方库没有很好的实现,假如后续要提供,也只是包装一个异步接口,内部起线程去执行同步的接口来达到异步的效果,这样其实没什么大的意义,所以后续看用户的需求,看是否要提供这样的接口。

1 个赞

好的。

跪求 包装一个 异步client

上面已经说了,包装的异步,也只是在异步接口里面起个线程做而已,觉得没意义所以没提供。

我在业务层 先用CompletionService 来封装一下

我一次初始化几个session后

线程池里面 每次从阻塞队列里面获取session来执行查询,比之前的方式快了至少一倍

public static BlockingQueue<Session> completionQueue = new LinkedBlockingQueue<Session>();

你要看查询什么。你重新拿一个session再执行query,和你一直拿不释放的session执行query,是会多一次认证的。这个多的时间应该就是认证的时间。

嗯 之前 是串行 现在加了一个线程池 并行 发挥graph的并发优势

有个疑问请问一下,
public static BlockingQueue completionQueue = new LinkedBlockingQueue();
提前存储的session 过期时间是多少?默认NebulaPoolConfig 的timeout为0,代表永远不过期吗?

还有就是nebula graph重启后,提前存储的session会报错Session `86’ has expired。在这种情况下 如何避免呢?
我看代码里面有ping 函数,这个怎么用呢?
谢谢

提前存储的session 过期时间是多少?默认NebulaPoolConfig 的timeout为0,代表永远不过期吗

不是过期,是指向服务端发送的请求的超时时间。

还有就是nebula graph重启后,提前存储的session会报错Session `86’ has expired。在这种情况下 如何避免呢?

这个需要重新从连接池里面拿新的session,或者等服务端的持久化 sessionId 的 pr 进去

我看代码里面有ping 函数,这个怎么用呢?

这个主要是检测服务端是否能连接上,或者检测服务端是否活着。

1 个赞