【问题标题】:Using Meteor Framework in Monitoring Application在监控应用程序中使用 Meteor 框架
【发布时间】:2014-02-10 03:12:39
【问题描述】:

我在监控应用程序中使用 Meteor 框架进行评估。

用例。在集群中运行的 Java 应用程序生成数据。 Web 应用程序可视化这些数据(图表等)

目前它是用普通的 WebSocket 和自定义的 pub/sub 机制实现的。

Java App ->(发布到)-> WebSocket 服务器 ->(推送到)-> Web App(浏览器)

技术栈:

  • Java(数据生成)
  • Node.js(网络服务器)
  • AngularJS(JavaScript 框架)

问题:

  1. Meteor 是不是同样的好候选?
  2. Java 应用程序将如何与 Meteor 通信? Java客户端还是直接写入MongoDB? 找到了这个java客户端https://github.com/kutrumbo/java-ddp-client
  3. 在现有的 Node.js 应用程序中使用 Meteor 相对容易吗?

【问题讨论】:

    标签: java javascript node.js meteor


    【解决方案1】:
    1. 是的,流星是这些任务的理想人选!您的项目似乎是一个非常简单的流星方案,不需要发布很多数据并且需要实时监控。

    2. 这取决于您需要从 Java 应用程序中实现什么

      • Java 服务器更改 mongoDB:可能是一种方法 [编辑] 我从未尝试过,但现在 Meteor 支持在外部更改 MongoDB 后实时 DB 发布(不再等待 10 秒延迟发布)。因此,请注意您从 Java 应用程序对其所做的更改。
      • 使用您的 Meteor 服务器作为客户端,并从作为服务器的 Java 部分提取值。这可以使用计时器来实现,很容易设置一个 java servlet(或任何你想要的)并在发生有趣的事情时从流星服务器端发布结果......
      • 使用 java 应用程序将更改发布到流星服务器。这可能是您正在寻找的,我可以看到实现此目的的两种方法。
        1. 通过网址。使用路由器(例如iron-router)设置流星,一旦您的客户端连接到流星服务器,您就可以从 url 检索查询并使用它执行您想要的操作。优点是从 java 应用程序对服务器的 url 进行“获取”调用很容易,缺点是您可能会受到数据格式的限制。
        2. 通过这个出色的 DDP 客户端连接到您的服务器,然后从最后一个调用方法调用。在服务器上,一旦调用该方法,只需更新相应的集合即可。 DDP 确实是一个简单的协议,客户端设置也很简单,所以我个人会选择它。
    3. 我的建议是在 Meteor 中使用 Node 插件。 Meteor 已经自带了 Node(这是他的引擎),如果你真的需要,你仍然可以在其中使用 node.js 模块,反之则要困难得多。

    如何开始:

    1. 在您的计算机上安装流星

    2. 创建一个集合测试,发布它

    3. 创建一个虚拟网页只是为了订阅和显示这个集合

    4. 对结果满意后,创建一个从外部更新集合的方法。

    Meteor.methods({
      foo: function (arg1) {
       test.insert(arg1);
      }
    

    在您的 java 客户端中:

     DdpClient client = new DdpClient("localhost", 3000);
     client.connect();
     client.call("foo", objectToAdd); // something like this
    

    你已经完成了,这是一个虚拟项目,用于从你的 java 应用程序中将一个项目添加到“测试”集合中。由于流星负责将所有内容发布给客户,您现在只需要找到一个好的平面设计师来制作一个很棒的监控网页......

    【讨论】:

    • 值得注意的是:如果使用从mongodb到meteor的oplog tailing,不会有10s的滞后
    • @imslavko 没错,从 0.7.0 开始,meteor 使用触发器而不是每 10 秒轮询一次更改,这表示我从未尝试过,也无法谈论它的实际效率。但即便如此,我仍然宁愿使用 DDP 客户端而不是从另一个进程更改 mongoDB,我认为这是将模型和事件保持在一个地方处理的更好方法。
    • 我同意你的观点,但请注意这仍然很重要,因为它可能是一个更简单的短期解决方案。
    • @FlavienVolken,我正在尝试实现你提到的部分>'使用你的 Meteor 服务器作为客户端并从作为服务器的 Java 部分提取值。但我无法从 Meteor Server 中找到 simpleWebSocket 定义。您能否提示一些实施细节/要包括哪个包。我尝试了 sockjs-client、socket.io-client、faye-websocket,但是每当我在流星服务器端代码中提到 WebSocket 时,我都会得到未定义的引用。稍后也会发布代码快照以在另一个问题中解释我的问题
    • @harshvchawla 我建议为它打开一个新问题。
    猜你喜欢
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多