我正在构建一个Java EE应用程序,它创建了大量操作数据的线程。有没有办法在单独的服务器上创建这些线程,而不是我的应用程序托管的那个?然后让我的应用程序服务器设置为只访问另一个(线程)服务器,以便在用户指定的时间从线程获取数据。我非常关心我的Web应用程序的可伸缩性。
答案 0 :(得分:2)
在Java-EE应用程序中,您不应该自己创建/运行线程。这是应用程序服务器的责任。 除此之外,同时启动无限数量的线程是一个坏主意。这很容易让您的服务器瘫痪。
您应该考虑使用消息队列。由于符合java-ee的应用程序服务器确实实现了JMS - 它们已经构建了消息队列实现。例如。如果你正在使用JBoss - JMS-Implementation是HornetQ我相信自从野生动物他们已经转移到ActiveMQ。
这也可以解决您的第二个问题:运行您的线程 - 或者在此停止您的消息队列 - 在单独的服务器上,甚至在服务器集群中 - 因为您可以使用JMS或者使用JMS将消息发布到远程消息队列AMQP协议。 如果您在单独的服务器上运行消息队列,则甚至不需要队列的应用程序服务器。您可以运行独立队列。在这种情况下,我会建议RabbitMQ。