如何用RabbitMQ和nodejs运行独立的java

我一直在努力把node.js放在我们的java web服务器前,以利用节点的asynchronous处理 – 做一些轻量级的处理和其他任务,最终socket.io。 应用程序的大部分实际工作都是用java完成的,到目前为止,我们一直使用jetty webserver来处理所有的请求。 我一直在考虑使用node-http-proxy来转发(可能修改的请求)。 经过进一步考虑,我意识到不是转发http请求,而是使用像RabbitMQ和node-amqp库这样的更强大的通信协议。 这也可以更好地支持从java通过节点和socket.io推回到浏览器。

我的问题是:现在,处理所有传入的请求与节点,是否有任何理由继续在docker运行Java? 如果没有,我应该直接从命令行上的main方法运行java代码吗? 最后,这种方法是否存在重大缺陷?

我们的应用程序是一个单一的页面应用程序,并超越第一个请求加载页面最初,所有进一步的调用只是restful json调用,应该很容易通过amqp转移。

根据使用情况,使用Jetty或Tomcat作为Java程序容器没有任何优势。 Jetty或Tomcat具有接收HTTP请求并将其转发给worker java程序的优点。 但在你的情况下,请求被NodeJS接收并转发到MQ, java worker将主动连接到MQ并获得任务并在完成时发送结果 。 所以在这里最好使用独立的Java。 当请求变得很多时,随着工作者集群处理更多的任务,很容易启动许多独立的Java程序。 NodeJS和MQ可以caching多个asynchronous请求,Java工作者可以处理它们的同步。 例如:1个NodeJS服务器,1个MQ服务器,3个Java工作服务器。