gremlin-driverをJavaで使用すると、GraphTraversalの "sideEffect"を使用できません。WebSocketGremlinRequestEncoderは少なくとも1つのメッセージを生成する必要があります - janusgraph-dynamodb withRemoteを使用して "sideEffect"は機能しません。
graph = EmptyGraph.instance()
cluster = Cluster.open("conf/remote-objects.yaml");
graphTraversalSource = graph.traversal().withRemote(DriverRemoteConnection.using(cluster));
sideEffectを使用しています
私のクエリは次のようになります。
AtomicLong level1 = new AtomicLong(0);
graphTraversalSource.V().hasLabel("user")
.has("uuid", "1234")
.sideEffect(it -> it.get().property("level", level1.getAndIncrement())).emit().repeat(in())
.until(loops().is(5)).valueMap("uuid", "name", "level");
私は依存関係としてjanusgraph-DynamoDBのストレージ・バックエンドを使用してJavaアプリケーション内グレムリン・サーバを実行しているとに接続されたときに動作するように使用されるこのクエリをdyamodb。私はEC2で実行しているサーバーをグレムリンへのリモート接続を使用してに切り替えたとき、私は、エラーメッセージの下になって始めた:私は上記のクエリからsideEffectの一部を削除した場合
java.util.concurrent.CompletionException: io.netty.handler.codec.EncoderException: WebSocketGremlinRequestEncoder must produce at least one message., took 3.895 sec
、それが正常に動作します。私は本当にトラバース中にカスタムプロパティを追加し、それをデータベースに保存せずに結果に含める必要があります。
ラムダ部分をクリアしていただきありがとうございます。 – monali01
私のデータにはメンバータイプのユーザーがいて、すべてのユーザーをループして特定のタイプを見つけるときにカスタム変数「レベル」を増やそうとしています。「管理者」と言いましょう。ユーザーの1人が「管理者」でなく、彼を後援した親またはユーザーに深く関わっていない場合、ループを停止する - 彼は管理者ではないかもしれないが、彼の親は管理者であり、彼を得ることができる必要があるその場合は親です。また、私は彼らの注文を維持する必要があるので、私は "レベル" – monali01