【发布时间】:2013-11-21 10:14:59
【问题描述】:
我一直在努力将 node.js 放在我们的 java web 服务器前面,以利用 node 的异步处理——做一些轻量级的处理和其他任务,最后是 socket.io。该应用程序的大部分实际工作都是在 java 中完成的,到目前为止,我们一直在使用 jetty 网络服务器来处理所有请求。我最初一直在考虑使用 node-http-proxy 来转发(可能是修改过的请求)。经过进一步考虑,我意识到我可以使用 RabbitMQ 和 node-amqp 库之类的东西来实现更健壮的通信协议,而不是转发 http 请求。这也将更好地支持从 java 通过 node 和 socket.io 推送回浏览器。
我的问题是:现在使用节点处理所有传入请求,是否有任何理由继续在码头内运行 java?如果不是,我是否应该从命令行的 main 方法中直接运行 java 代码?最后,这种方法是否存在重大缺陷?
我们的应用程序是一个单页应用程序,除了最初加载页面的第一个请求之外,所有进一步的调用都只是 restful json 调用,应该很容易通过 amqp 传输。
【问题讨论】:
-
为什么不能在 Java 中只使用多线程?您希望通过添加消息代理的所有额外复杂性和另一种语言的代码来获得什么?
-
在不深入了解为什么的情况下,我们想要获得的大部分是异步处理请求的好处,特别是廉价地保持请求(socket.io/节流)。我们探索了码头延续,但 java 代码非常依赖于线程。目前,尽管复杂,这似乎更清晰。我们还计划在其他领域利用 AMQP。
标签: java node.js rabbitmq amqp