0

我目前的情况就像

  1. 我有一个兔子 mq,它给了我所下订单的详细信息。
  2. 另一方面,我有我的 Titan db(cassandra 存储、es 索引后端和 gremlin 服务器)。
  3. 还有一个我有 nodejs 应用程序,它可以使用https://www.npmjs.com/package/gremlin通过 http api 与 gremlin 服务器交互。我可以从这里访问我的图形数据库。

现在我要做的是将数据从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)
});

接下来我应该如何移动,以便我可以利用现有的rabbit mq 订单并将它们推送到titan db。

由于一些限制我不能使用java。

4

1 回答 1

3

您很可能正在寻找类似node-amqp的东西,它是 RabbitMQ 的 Node.js 客户端。你想做的是:

  1. 建立与 Gremlin 服务器的连接
  2. 建立到 RabbitMQ 的连接
  3. 监听 RabbitMQ 队列中的消息
  4. 将这些消息发送到 Gremlin,创建图形元素

您必须注意的事情可能会影响您的表现:

  1. 发送带有绑定参数的 Gremlin 查询
  2. 批量消息:创建多个顶点并在同一个事务中提交它们(= 相同的 Gremlin 查询,除非您.commit()自己处于会话模式)。几千个数字应该有效。
  3. 注意背压并确保您的 Titan 实例不会收到超出其处理能力的消息。

我对 RabbitMQ 不熟悉,但希望这可以帮助您入门。

注意:Gremlin javascript 驱动程序通过 WebSocket 连接与 Gremlin Server 交互,该连接是永久性的和双向的。客户端还不支持 HTTP Channelizer(这不是您希望在当前场景中建立的那种连接)。

于 2016-04-24T09:21:37.930 回答