gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:32:29 25 4
gpt4 key购买 nike

我一直致力于将 node.js 放在我们的 java web 服务器前面,以利用 Node 的异步处理 - 执行一些轻处理和其他任务,最终完成 socket.io。应用程序的大部分实际工作都是用 java 完成的,到目前为止,我们一直使用 jetty Web 服务器来处理所有请求。我最初一直在考虑使用 node-http-proxy 来转发(可能修改了请求)。经过进一步考虑,我意识到我可以使用 RabbitMQ 和 node-amqp 库之类的东西来实现更强大的通信协议(protocol),而不是转发 http 请求。这也将能够更好地支持从 java 通过 Node 和 socket.io 推送回浏览器。

我的问题是:现在用 Node 处理所有传入请求,是否有任何理由继续在jetty内运行java?如果不是,我应该从命令行上的 main 方法运行 java 代码吗?最后,这种方法有什么重大缺陷吗?

我们的应用程序是一个单页面应用程序,除了最初加载页面的第一个请求之外,所有进一步的调用都只是restful json调用,并且应该很容易通过amqp传输。

最佳答案

从使用情况来看,使用Jetty或者Tomcat作为java程序容器并没有什么优势。 Jetty或Tomcat的优点是接收HTTP请求并将其转发给java工作程序。但在您的情况下,请求由 NodeJS 接收并转发到 MQ,java Worker 将主动连接到 MQ 并获取任务并在完成后发送结果。所以这里最好使用独立的Java。当请求变得很多时,很容易启动许多独立的Java程序作为工作集群来处理更多的任务。 NodeJS 和 MQ 可以异步缓存多个请求,而 Java 工作线程可以同步处理它们。例如:1 个 NodeJS 服务器、1 个 MQ 服务器、3 个 Java Worker 服务器。

关于java - 如何使用 RabbitMQ 和 nodejs 运行独立的 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com