0

私の現在のシナリオは

  1. 私は、注文の詳細を教えてくれるうさぎのmqを持っています。
  2. 反対側には、titan db (cassandra ストレージ、es インデックス バックエンド、gremlin サーバー) があります。
  3. さらに別の私は、 https://www.npmjs.com/package/gremlinを使用して http api を介して gremlin サーバーと対話できる nodejs アプリケーションを持っています。ここからグラフ データベースにヒットできます。

今私がやろうとしているのは、rabbit mq から titan db にデータをロードすることです。

今までできたのは、gremlinノードモジュールを使用してnodejsファイルからデータをロードすることです

    var createClient = require('gremlin').createClient;
//import { createClient } from 'gremlin';
 
const client = createClient();

client.execute('tx=graph.newTransaction();tx.addVertex(T.label,"product","id",991);tx.commit()', {}, function(err, results){
  if (err) {
    return console.error(err)
  }
    console.log(results)
});

既存のうさぎ mq の注文を利用して、それらを titan db にプッシュできるようにするには、次にどうすればよいでしょうか。

いくつかの制約により、Java を使用できません。

4

1 に答える 1

3

おそらく、RabbitMQ の Node.js クライアントであるnode-amqpのようなものを探しているでしょう。あなたがしたいことは次のとおりです。

  1. Gremlin Server への接続を確立する
  2. RabbitMQ への接続を確立する
  3. メッセージの RabbitMQ キューをリッスンする
  4. これらのメッセージを Gremlin に送信し、グラフ要素を作成します

そうしないと、パフォーマンスが低下する可能性があるため、注意する必要があります。

  1. パラメーターがバインドされた Gremlin クエリを送信する
  2. バッチ メッセージ: 複数の頂点を作成し、同じトランザクションでそれらをコミットします (= 自分自身がセッション モードでない限り、同じ Gremlin クエリ.commit())。数千の数字が機能するはずです。
  3. バック プレッシャーに注意し、Titan インスタンスが処理しきれないほどのメッセージであふれないようにしてください。

私は RabbitMQ に詳しくありませんが、うまくいけば、これで始められるはずです。

注: Gremlin JavaScript ドライバーは、永続的で双方向の WebSocket 接続を介して Gremlin Server と対話します。クライアントはまだ HTTP チャネライザーをサポートしていません (現在のシナリオで確立したい種類の接続ではありません)。

于 2016-04-24T09:21:37.930 に答える