在Gremlin.Net中,有一些用于异步提交查询的扩展函数,其中一些使用不推荐的
是否有一种方法可以异步提交像下面这样的查询,而不需要提交字符串或
string
,另一些使用RequestMessage
,但这种方式不如使用GraphTraversal
函数易读。是否有一种方法可以异步提交像下面这样的查询,而不需要提交字符串或
RequestMessage
?var res = _graphTraversalSource.V().Has("name", "Armin").Out().Values<string>("name").ToList();
更多背景信息
我正在编写一个查询AWS Neptune的API。以下是我在单例服务的构造函数中如何获取GraphTraversalSource
(我不确定是否应该使RemoteConnection
成为单例,并为每个查询生成一个GraphTraversalSource
,或者这是正确的方法):
private readonly GraphTraversalSource _graphTraversalSource;
public NeptuneHandler(string endpoint, int port)
{
var gremlinClient = new GremlinClient(new GremlinServer(endpoint, port));
var remoteConnection = new DriverRemoteConnection(gremlinClient);
_graphTraversalSource = AnonymousTraversalSource.Traversal().WithRemote(remoteConnection);
}
graphTraversalSource.V().Has("name", "Armin").Out().Values<string>("name").ToList();
。那具体哪里出了问题呢? - Florian Hockmannawait remoteConnection.SubmitAsync(traversal.ByteCode)
,我的另一个问题是DriverRemoteConnection
的线程安全性。我可以在线程之间共享该类型的对象吗? - Armin Bashizade.Promise()
,例如:g.V(1).Values<string>("name").Promise(t => t.Next());
。 是的,在应用程序中应共享DriverRemoteConnection
。在Gremlin中通常建议实际上共享遍历源g
,但这也包括DriverRemoteConnection
。 - Florian Hockmann